Текущий архив: 2007.01.07;
Скачать: CL | DM;
Вниз
Снова от меня ламерский вопрос (по PHP на этот раз) Найти похожие ветки
← →
ProgRAMmer Dimonych © (2006-12-16 20:52) [0]Из-за чего могут возникать проблемы?
Имеется файл SendMail.php:
<?
//Готовим текст к отправке
mail(...)
?>
Всё работает отлично. Решил сделать так, чтобы вместо белого окна было пояснениеи о том, что через 5 секунд посетителя вернут туда, откуда он пришёл, ну и соответственно, чтобы надпись соответствовала действительности.
Пробовал использовать echo после mail, пробовал встраивать php-скрипт в HTML-код - не помогло. В лучшем случае отправка письма происходит, а окно остаётся пустым.
Приблизительное содержание выводимого HTML-документа (знаки <> во избежание проблем с отображением в форуме заменены на []):
[HTML]
[HEAD]
[TITLE]
Message was sent successfully!!!
[/TITLE]
[META HTTP-EQUIV="Refresh" CONTENT="5; URL=javascript:history.back()"]
[LINK REL="stylesheet"...]
[/HEAD]
[BODY]
[P CLASS="SomeOfMyClasses"]AnyText[/P]
[/BODY]
[/HTML]
Из-за чего может возникать проблема?
← →
Vendict © (2006-12-16 21:04) [1]приведи полностью php код. сложно так сказать, что мешает.
← →
ProgRAMmer Dimonych © (2006-12-16 21:06) [2]Например, так:
<?
$Msg=... //Это работает нормально
mail("...",$Topic,$Msg);
echo "<HTML><HEAD><TITLE>Запрос обработан.</TITLE>
<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=windows-1251\">
<META HTTP-EQUIV=\"Refresh\" CONTENT=\"5; URL=javascript:history.back()\">
<LINK REL=\"stylesheet\" TYPE=\"text/css\" HREF=\"styles.css\"></HEAD>
<BODY><TABLE><TR><TD WIDTH=20%></TD><TD WIDTH=80%></TD></TR>
<TR><TD WIDTH=20%></TD><TD WIDTH=80%><P CLASS=\"Info\">Ваш запрос обработан. Подождите 5 секунд...</P></TD></TR></TABLE></BODY></HTML>"
?>
← →
ProgRAMmer Dimonych © (2006-12-16 21:21) [3]I really need your help!!!
← →
ProgRAMmer Dimonych © (2006-12-16 21:40) [4]Всё, благодарю, вроде получилось...
← →
SerJaNT © (2006-12-17 02:28) [5]Лучше напиши так:
@mail("...",$Topic,$Msg) or $error=true;
if ($error) {
print "Ошибка отправки";
}
else
{
print "Сообщение отправлено";
}
← →
ProgRAMmer Dimonych © (2006-12-17 10:51) [6]> SerJaNT © (17.12.06 02:28) [5]
Спасибо за совет, займусь.
А как вообще можно реализовать нечо наподобие счётчика, но чтобы когда файл-счётчик по размеру превышает определённое значение, то этот файл по эл. почте отправлялся на специальный почтовый ящик (т.е. ящик специально для этого предназначенный), а на сервере, естественно, удалялся? Пробовал сделать через fputs с последующим
if (filesize(...)>Число)
{
// Отправка файла
...........................
// Конец отправки
unlink(...);
}, но письмецо не доходит (покопал гугл на предмет отправки писем с вложениями), а когда пробовал под денвером на своём компе, то в памяти оказалось штук пять троек процессов (в каждой тройке 1 - Perl, 2 - Sendmail), а файл оставался на месте (при этом броузер переставал отображать страницу).
← →
Zeqfreed © (2006-12-17 11:24) [7]
> if (filesize(...)>Число)
> {
> // Отправка файла
> ...........................
> // Конец отправки
> unlink(...);
> }
Такое на php не будет работать, как ты и сам понимаешь. Какие могут быть вопросы, если конкретного кода нет? В 17 строке смотри.
← →
ProgRAMmer Dimonych © (2006-12-17 13:43) [8]> Такое на php не будет работать, как ты и сам понимаешь
Почему, если не секрет? Или я торможу?
← →
Zeqfreed © (2006-12-17 13:57) [9]
> Почему, если не секрет?
Потому что русская локаль не поддерживается :) Первое предложение в [7] было как раз-таки не самым главным.
← →
ProgRAMmer Dimonych © (2006-12-17 13:59) [10]$f=fopen("visitors.dat","a+t");
flock($f,LOCK_EX);
fputs($f,"IP-адрес: ".$REMOTE_ADDR."\n");
fputs($f,"Броузер: ".$HTTP_USER_AGENT."\n");
fflush($f);
flock($f,LOCK_UN);
fclose($f); // До этого места работает
if (filesize("visitors.dat")>200) // А отсюда - нет
{
$Lines=File("visitors.dat");
$Msg=Implode("\n",$Lines);
$Headers="From: DimonSoft WebSite\n";
$Headers.="Content-type: text/plain; charset=windows-1251";
mail("DimonSoftware@yahoo.com","Site visits",$Msg,$Headers);
echo("OK!!!");
unlink("visitors.dat");
}
← →
ProgRAMmer Dimonych © (2006-12-17 14:00) [11]> echo("OK!!!");
P.S. Это для проверки добавлено: нулевая реакция. Для справки: 1 запрос на загрузку этой страницы - 101 байт, т.е. после второго запроса должна происходить отправка.
← →
Zeqfreed © (2006-12-17 14:22) [12]Ну а если просто убрать условие, и unlink, то отсылается? Сейчас нет желания самому это все проверять :)
← →
ProgRAMmer Dimonych © (2006-12-17 20:45) [13]> Zeqfreed © (17.12.06 14:22) [12]
> Ну а если просто убрать условие, и unlink, то отсылается?
> Сейчас нет желания самому это все проверять :)
По части Mail() - это всё работает прекрасно. А вот файлы... Надо будет глянуть...
← →
ProgRAMmer Dimonych © (2006-12-17 20:48) [14]Насчёт filesize(), кстати. Удалось выяснить, что результат работы этой функции кэшируется, поэтому нужно перед вызовом очищать кэш. Но если добавить очистку (функция ClearStatCache()), то страница вообще перестаёт отображаться (сам HTML-код идёт сразу после скрипта и до конца файла).
Пробовал также функцией File() загрузить все строки файла в массив и определить количество элементов полученного массива - всё равно не работает :(
Страницы: 1 вся ветка
Текущий архив: 2007.01.07;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.058 c