Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.037 c
15-1166292829
<[exe-cutt3r]>
2006-12-16 21:13
2007.01.07
Задачи по D7


15-1165953376
oxffff
2006-12-12 22:56
2007.01.07
Вопрос для Cyraxa. Как модифицировать GOF паттерн Visitor


2-1166563307
aleko
2006-12-20 00:21
2007.01.07
SQL-запросы


1-1163399044
Сергей_С
2006-11-13 09:24
2007.01.07
Активировать окно Access


15-1166196896
Sashok-hok
2006-12-15 18:34
2007.01.07
Проблемы с винтчестиром