[ veljovic @ 05.08.2004. 20:37 ] @

imam problem sa jednim skriptom.

napisao sam ga za slanje e_poste ali kada ga pokrenem dobijem informaciju da
nemam pravo pristupa do /e_posta/enctype="multipart/form-data" na serveru. (Forbidden)

server je obican. localhost. phpTriad na windows_u. za postu koristim smtp jednog od
nasih ISP_a. to sam mu podesio u php.ini

gledao sam tu da promenim jos nesto ali nisam mogao da resim svoj problem.

dali neko zna u cemu gresim ?
[ NetworkAdmin @ 06.08.2004. 09:00 ] @
nedovoljno podataka... ili daj dio koda koji je relevantan i iskopiraj error bas onako kako ti vrati aplikacija ili zaboravi na pomoc.
[ veljovic @ 06.08.2004. 09:40 ] @
evo celog koda:

<?php
// simple_mailer.php
function mailer_header()
{
?>
<html>
<head><title>veljovic</title></head>
<body>
<?php
}
function mailer_footer()
{
?>
</body>
</html>
<?php
}
function error_message($msg)
{
mailer_header();
echo "<SCRIPT>alert(\"Error: $msg\");history.go(-1)</SCRIPT>";
mailer_footer();
exit();
}
function user_message($msg)
{
mailer_header();
echo "<SCRIPT>alert(\"$msg\");history.go(-1)</SCRIPT>";
mailer_footer;
exit();
}
function mail_form()
{
?>
<form method=post action=<?php echo"$PHP_SELF"; ?> enctype="multipart/form-data">
<input type=hidden name=action value=send_mail>
<div align=center>
<table cellspasing=2 cellpadding=5 width=90% border=1>
<tr>
<th align=center width=30%>To</th>
<td width=70%><input type=text name=mail_to size=20></td>
</tr>
<tr>
<th align=center width=30%>Cc:</th>
<td width=70%><input type=text name=mail_cc size=20></td>
</tr>
<tr>
<th align=center width=30%>Bcc:</th>
<td width=70%><input type=text name=mail_bcc size=20></td>
</tr>
<tr>
<th align=center width=30%>From:</th>
<td width=70%><input type=text name=mail_from size=20></td>
</tr>
<tr>
<th align=center width=30%>Reply-to:</th>
<td width=70%><input type=text name=mail_reply_to size=20></td>
</tr>
<tr>
<th align=center width=30%>Subject:</th>
<td width=70%><input type=text name=mail_subject size=20></td>
</tr>
<tr>
<th align=center width=30%>Body:</th>
<td width=70%><textarea name=mail_body rows=16 cols=70></textarea></td>
</tr>
<tr>
<th align=center width=100% colspan=2>
<input type=submit name=submit value=posalji>
<input type=reset name=reset value=reset>
</th>
</tr>
</table>
</div>
</form>
<?php
}
function send_mail()
{
global $mail_to,$mail_cc,$mail_bcc,$mail_from,$mail_reply_to;
global $mail_body,$mail_subject;

$mail_parts["mail_to"]=$mail_to;
$mail_parts["mail_from"]=$mail_from;
$mail_parts["mail_reply_to"]=$mail_reply_to;
$mail_parts["mail_cc"]=$mail_cc;
$mail_parts["mail_bcc"]=$mail_bcc;
$mail_parts["mail_subject"]=trim($mail_subject);
$mail_parts["mail_body"]=$mail_body;

if(my_mail(!mail_parts))
user_message("uspesno poslat mail '$mail_subject'");

else
error_message("doslo je do greske pri slanju e-maila '$mail_subject'");
}
function my_mail($mail_parts)
{
$mail_to=$mail_parts["mail_to"];
$mail_from=$mail_parts["mail_from"];
$mail_reply_to=$mail_parts["mail_reply_to"];
$mail_cc=$mail_parts["mail_cc"];
$mail_bcc=$mail_parts["mail_bcc"];
$mail_subject=$mail_parts["mail_subject"];
$$mail_body=$mail_parts["mail_body"];

if(empty($mail_to)) error_message("Prazno To polje!");
if(empty($mail_subject)) error_message("Prazno Subject polje!");
if(empty($mail_body)) error_message("Prazna poruka!");

$mail_to=str_replace(";", ",", $mail_to);

$mail_headers='';

if(!empty($mail_form)) $mail_headers.="From: $mail_from\n";
if(!empty($mail_reply_to)) $mail_headers.="Reply-to: $mail_reply_to\n";
if(!empty($mail_cc)) $mail_headers.="Cc:". str_replace(";", ",", $mail_cc)."\n";
if(!empty($mail_bcc)) $mail_headers.="Bcc:". str_replace(";", ",", $mail_bcc)."\n";

$mail_subject=stripslashes($mail_subject);
$mail_body=stripslashes($mail_body);
return mail($mail_to, $mail_subject, $mail_body, $mail_headers);
}

switch ($action)
{
case "send_mail":
mailer_header();
send_mail();
mailer_footer();
break;
case "mail_form":
mailer_header();
mail_form();
mailer_footer();
break;
default:
mailer_header();
mail_form();
mailer_footer();
break;
}
?>



a ovako izgleda odgovor:

Forbidden
You don't have permission to access /e_posta/enctype="multipart/form-data" on this server


mislim da nema nikakve tajne u kodu. samo treba naci gresku i kod moze da koristi ko god ga se docepa.
[ bzero @ 06.08.2004. 10:11 ] @
Citat:

Forbidden
You don't have permission to access /e_posta/enctype="multipart/form-data" on this server


/e_posta/enctype="multipart/form-data" ova strana ocigledno ne postoji na serveru.

Problem je izgleda ovde, action za ovaj form nije u redu:
Code:

 <form method=post action=<?php echo"$PHP_SELF"; ?> enctype="multipart/form-data">


Probaj da umesto $PHP_SELF stavis $_SERVER['PHP_SELF'], a stavi i navodnike:
Code:

 <form method=post action="<?php echo $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data">
[ bluesman @ 06.08.2004. 10:46 ] @
kao sto rece prethodnik, problem je samo u navodnicima koji nisu zatvoreni kod action=... pa za action uzima sve do kraja i trazi sve to kao path.
[ veljovic @ 06.08.2004. 11:23 ] @

greska je pronadjena !

treba zameniti liniju u kodu sa

<form method=post action="<?php echo $_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data">

medjutim !

u kodu ima drugih sitnih gresaka. kod sam iskopirao iz jedne knjige. kada se zameni sporna linija dolazi nova greska da su polja prazna ......

medjutim ako se zameni zadnji red u f-ji my_mail koji je sada

return mail("[email protected]", "Subject: poruka", "poruka rudrima u strajku ...");

onda se ne uzima vrednost polja iz forma vec direktno poruka stize na adresu [email protected]















[ Jbyn4e @ 06.08.2004. 11:34 ] @
Nema kod sitnih gresaka, vec je pisan za php verzije < 4.1, a ti ocigledno imas neku verziju > 4.1. POtrebno je da se podesi reigster globals na on u php.ini ili da koristis umoesto $promenljiva nesto oblika $_POST['promenljiva'] (odnosno neku od $_ promenljivih). "Workaround" je da koristis sledeci kod (bilo je o tome reci milijardu puta) koji ide na stetu sigurnosti, ali ne treba da se prepravlja kod. Dodaj na pocetak php fajla (iza <?) sledece:
Code:

// za php > 4.1 potrebno je ovo zbog register_globals = off)
if ($_POST) {
foreach (array_keys($_POST) as $var) {
$$var = $_POST["$var"];
    }
}