Элементарный вопрос по PHP

1 234
Коля Дубр
На сайте с 02.03.2005
Offline
153
#31

Если вопрос важный и срочный - заплатите специалисту, а то вам тут сейчас всем миром насоветуют :) Если есть желание как следует учиться - ставьте denwer, скачивайте маны - и в путь :)

ИМХО, 500 ошибка вылезает из-за .htaccess, а точнее из-за первых двух строчек (т.к. mod_rewrite успешно редиректит на хост с www, что и должен делать :) ). Где вы их вообще взяли? Насколько я знаю, во всем цивилизованном мире PHP уже давно работает как модуль апача, никакой cgi-bin не нужен :)

И скрипт этот в таком виде я бы юзать не стал. Считается, что register_globals=on не есть гуд :)

Dweep:
нужно заменить на это:
mail($mailfrom, $subject, $body, "From: $email\nX-Mailer: PHP/" . phpversion());

И получится офигенный спам-сервер :)

Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).
L
На сайте с 06.09.2005
Offline
88
#32

Все заработало! В .htaccess была проблема.

Большое спасибо всем откликнувшемся.

W
На сайте с 20.01.2007
Offline
40
#33

На будущее

Ljutik:
а вот тут ботва какая-то😕
дирректории logs нет, есть только файл с таким именем. Но доступ к нему запрещен. Есть только опция "выслать логи на e-mail". Это, как я понимаю, кривизна провайдера?!

Нет это не кривизна провайдера (хостера). У твоего хостера (rbc) про это в faq написано.

Этот файл нельзя скачать по ftp потому что это не файл а симвлическая ссылка.

Его можно просмотреть зайдя на сервер по ssh.

A
На сайте с 12.04.2007
Offline
9
#34

1) Неверно передаешь строки в параметрах надо так:

$body=convert_cyr_string (stripslashes($body),"w","k");

$subject=convert_cyr_string (stripslashes($subject),"w","k");

2) if ($error)

{

Проверяешь значение неинициализированной, нужно её инициалировать в начале например так:

$error="";

3) $email тоже нужно инициализировать.

4) если хочешь брать то что тебе передал пользователь, то к примеру mailfrom будет тут: $_POST['mailfrom']

Этот скрипт уже выполнится без ошибок:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Отправка письма</title>
<meta content="text/html;charset=windows-1251" http-equiv="Content-Type">
</head>
<body>
<?
//определение адреса, на кот. будет отправляться форма
$error="";
$email="";
$mailto="lanmob@gmail.com";
if (empty($ok))
{
?>
<h3>Отправьте вопрос автору сайта</h3>
Поля, отмеченные (*), обязательны для заполнения.
<br><br>
<form action="<?echo $PHP_SELF;?>" method="post">
<table>
<tr>
<td>Ваше имя:</td>
<td> <input type="text" name="username" size="30" maxlength="20"></td>
</tr>
<tr>
<td>* E-mail:</td>
<td><input type="text" name="mailfrom" size="30" maxlength="50"></td>
</tr>
<tr>
<td>* Вопрос:</td>
<td><textarea cols="50" rows="10" name="question"></textarea></td>
</tr>
</table>
<input type="submit" name="ok" value="отправить">
</form>
<?
}
else
{
//проверяем e-mail на корректность
if(!preg_match("/^([a-z,0-9,_,\-,\.])+\@([a-z,0-9,_,\-])+(\.([a-z,0-9])+)+$/", $mailfrom))
{
$error = "Не верно заполнено поле: <b>E-mail</b><br>";
}
if (empty($question))
{
$error .= "Не заполнено поле: <b>Ваш вопрос</b><br>";
}
if ($error)
{
echo $error;
echo "<br><a href=\"javascript:history.go(-1)\" class=\"text\">Вернуться назад</a>";
exit;
}
//формируем тело и тему сообщения
$subject="Вопрос от $mailfrom";
$body="Имя:\n$username\n\nE-mail:\n$mailfrom\n\nКомментарии:\n$question";
//конвертируем из win в koi
$body=convert_cyr_string (stripslashes($body),"w","k");
$subject=convert_cyr_string (stripslashes($subject),"w","k");
//отправляем по почте...
$sucess = mail($mailto, $subject, $body, "From: $email\nX-Mailer: PHP/" . phpversion());
if ($sucess)
{
echo "Спасибо. Ваш вопрос отправлен.<br><br>";
echo "<a href=\"javascript:history.go(-1)\" class=\"text\">Вернуться назад</a>";
}
}
?>

</body>
</html>
seo.adman.com: покупка/продажа ссылок, рекламный брокер (http://seo.adman.com) vads.adman.com: свой рекламный брокер за 5 минут (http://vads.adman.com)
R2
На сайте с 01.02.2007
Offline
28
#35

adman,

Вы подсказываете с ошибкой :)

п.3 инициализируете $email, а используете $mailfrom

п.4 нуихде $_POST[]

А вообще (имхо) - нарушена последовательность -

сначала должна идти php-часть, а затем html

тогда в случае $error пользователь получит ту же форму

(с уже введенными данными) и сообщением об ошибке...

A
На сайте с 12.04.2007
Offline
9
#36
Raul21:
adman,
Вы подсказываете с ошибкой :)
п.3 инициализируете $email, а используете $mailfrom
п.4 нуихде $_POST[]

А вообще (имхо) - нарушена последовательность -
сначала должна идти php-часть, а затем html
тогда в случае $error пользователь получит ту же форму
(с уже введенными данными) и сообщением об ошибке...

Ну, я хотел помочь, чтобы скрипт собрался, у меня он после правки собрался. Остальное логические ошибки. Я навел на мысль, как их можно решить.

1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий