Проблема с mail()

rubanok

Новичок
Проблема с mail()

Вот скрипт:
<?php
$to = "[email protected]";
$subject = "link";
$message = "URL: $url\n";
$message .= "Email: $mailfrom\n";
$message .= "Text:$question";
if(@$_REQUEST['ok']){
mail("$to", "$subject", "$message", "From: [email protected] \r\n");
} ?>
<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="POST">
URL:<br /><input type="text" name="url" /><br />
Email:<br /><input type="text" name="mailfrom" /><br />
Text:<br /><textarea cols="20" rows="5" name="question"></textarea><br />
<input type="submit" name="ok" value="отправить" />
</form>
Заранее извините может это полная чушь но я только учусь.
Проблема в том что после запуска скрипта письмо отправляется и приходит на указаный адрес, но текста введённого в поля формы в письме нету. Скрипт запускаю на своём локальном сервере. В чём причина?
 

ZN

Новичок
зачем вы берёте переменные в кавычки?
у вас register_globals=on ?
 

ZN

Новичок
DJ_Deni
нет, не надо register_globals=on, "because it often leads to security bugs" (с) php.ini
надо либо $_POST['varname'], либо extract($_POST)
 

vadim

Guest
>>extract($_POST)
если уж о безопасности говорим, то надо так $_POST[var]
 

ZN

Новичок
vadim
да что вы говорите?
безопасность заключается в том, что переменные не создаются автоматически, а программист контролирует их создание, так вот extract($_POST) делает программист, который должен понимать, что произойдёт после этого, а если не понимает, то ему не $_POST[var], ни вообще уже ничто не поможет
 

rubanok

Новичок
добавил в код:
ini_set("display_errors",1);
error_reporting(E_ALL);
и вот какие ошибки:

Notice: Undefined variable: url in
Notice: Undefined variable: mailfrom in
Notice: Undefined variable: question in
Notice: Undefined index: ok in

если правильно понял переменные не бали инициализированы, тогда в чём решение моей проблемы и про $_POST[var] не понятно что и куда

-~{}~ 15.03.06 02:56:

строку
mail("$to", "$subject", "$message", "From: [email protected] \r\n");
исправил на
mail($to, $subject, $message, "From: [email protected]
\r\n");

-~{}~ 15.03.06 02:57:

спасибо за ссылочку
http://phpfaq.ru/debug
 

rubanok

Новичок
Вот что я сделал и теперь сообщение приходит:
Разбил скрипт на два файла, в одном форма а в другом сам скрипр отсылки сообщения
В первом:
<form action="mail.php" method="post">
URL:*<br /><input type="text" name="url" /><br />
Email:*<br /><input type="text" name="email" /><br />
Text:*<br /><textarea cols="20" rows="5" name="text"></textarea><br />
<input type="submit" name="ok" value="отправить" />
</form>
Во втором:
<?php
$to = "[email protected]";
$subject = "locator";
$url = $_POST["url"];
$email = $_POST["email"];
$text = $_POST["text"];
$message = "URL:".$url."\nEmail:".$email."\nText:".$text;
if($_POST["ok"]){
//mail($to, $subject, $message, "From: [email protected] \r\n", "Content-type: text/html; charset=windows-1251 \r\n");
}
?>
Всёбы хорошо, но если добавить в скрипт
ini_set("display_errors",1);
error_reporting(E_ALL);
то вот такие ошибки:
Notice: Undefined index: url in
Notice: Undefined index: email in
Notice: Undefined index: text in
Notice: Undefined index: ok in
Могу ли из-за этого возникнуть проблемы?
 

SelenIT

IT-лунатик :)
В данном случае особых проблем не возникнет. Но желательно не доводить до появления Notic'ов и определять параметры примерно так:
PHP:
$url = isset($_POST["url"]) ? $_POST["url"] : '';
 
Сверху