| |
|
|
| | Скажите пожалуйста я хочу сдеать так чтобы при регистрации в системе администратору на мейл приходило сообщения о реге и данных пользователя который зарегистрировался.
вот примерно так правильно?
[code]
// отправка админу сообщения о регистрации в рейтинговой системе
if ($sendmail=="1") {
$headers=null; // Настройки для отправки писем
$headers.="Content-Type: text/html; charset=utf-8\r\n";
$headers.="From: ".$name." <".$email.">\r\n";
$headers.="X-Mailer: PHP/".phpversion()."\r\n";
$deldate=date("d.m.Y h:i:s",$deldt); // конвертируем дату удаления в человеческий формат
// Собираем всю информацию в теле письма
в этом месте нужно вставить инфу которую пользователь вписал
// Отправляем письмо майлеру на съедение ;-)
mail("$myemail", "Сообщение от $name - посетителя доски объявлений", $allmsg, $headers);
}
|
мне нужно в том месте которомя указал приходило на мефл следующая инфа:
($adres $name $pasword $email $opisan) адрес, имя, пароль, мейл,описания соответствено.
Как это сделать? | |
| |
|
|
| |
|
|
| |
для: 31
(23.07.2006 в 03:38)
| | | тоесть на мейл :)...очень спешил. | |
| |
|
|
| |
|
|
| |
для: 31
(23.07.2006 в 03:38)
| | | А в чём проблема?
Просто переменной allmsg присваиваете содержимое письма (после проверки на корректность данных, чтобы не хакнули) в виде html | |
| |
|
|
| |
|
|
| |
для: ЯR
(23.07.2006 в 04:11)
| | | ЯR, Вы меете ввиду так:
$allmsg = '1. Имя : '.$name
'2. Пароль: '.$password
'3. E-mail: '.$email
'4. Описание: '.$opisan
|
Посмотрите я ошибку не допустил в этом коде? | |
| |
|
|
| |
|
|
| |
для: 31
(23.07.2006 в 04:24)
| | | лучше ещё поставить <br> после каждой строки (письмо ведь в html-формате)
и перед этим обработать их ф-ией htmlspecialchars(), т.е.:
<?php
$name = htmlspecialchars($name);
// и т.д.
?>
|
| |
| |
|
|
| |
|
|
| |
для: ЯR
(23.07.2006 в 04:46)
| | | Вы имеете ввиду отфильтровать? Спасибо я не подумал об этом...а вообще от чего защищает функция htmlspecialchars? | |
| |
|
|
| |
|
|
| |
для: 31
(23.07.2006 в 04:52)
| | | от встраивания html-тегов.
Например, чтобы какой-нибудь злостный тип не написал скрипт, и не украл пароль у кого-нибудь.
Например, если кто-то напишет в описании
<script>alert('Hello');</script>
|
, то в письме это так и отобразится, а не вызовет JavaScript-функцию. | |
| |
|
|
| |
|
|
| |
для: ЯR
(23.07.2006 в 05:02)
| | | ЯR, я извиниясь конечно, но жутко интересно если злоумышленик даже впишет такой скрипт это же вреда не принесет? Но например если вписать в скрипт какой -нибудь шел то взлоумышленник может им воспользоваться? Или он не будет выполнятся?
Спасибо. | |
| |
|
|
| |
|
|
| |
для: 31
(23.07.2006 в 15:05)
| | | Злоумышленик может вписать в JavaScript, который будет собирать cookie пользователя и отправлять на другую машину или осуществлять перенаправление на другой сайт. | |
| |
|
|
| |
|
|
| |
для: cheops
(23.07.2006 в 15:19)
| | | А вот к примеру можно так обработать переменные:
$name = htmlspecialchars($name);
$password=htmlspecialchars($password)
$email=htmlspecialchars($email)
$opisan=htmlspecialchars($opisan) | |
| |
|
|
| |
|
|
| |
для: 31
(24.07.2006 в 18:15)
| | | e-mail лучше регулярными выражениями проверять:
<?php
if (!preg_match('/^[A-z0-9\.\-_]+@[A-z0-9\.\-]+\.[A-z]{2,4}$/i', $email)){
print 'Введите e-mail в виде user@server.ru';
exit();
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: ЯR
(25.07.2006 в 03:10)
| | | Что-то не получается у меня. Для меня это пока еще не так легко. А может это нужно написать перед самой формой все это, а не тут? Ведь тут просто идет сбор информации для отправки его на email. | |
| |
|
|
| |
|
|
| |
для: 31
(25.07.2006 в 16:17)
| | | > Что-то не получается у меня.
А что не получается?
> Ведь тут просто идет сбор информации для отправки его на email.
Так ведь именно перед отправкой и надо проверить, верны ли данные, когда они уже введены. | |
| |
|
|
| |
|
|
| |
для: ЯR
(25.07.2006 в 16:31)
| | | Я думаю например вот пользователь регистрирует свой сайт в системе вводит в форму свой мейл ну если он некоректен то выйдет ошибочка. Вообщем вот код в котором нужно сделать вписать код который собирает данные ввеленые в форму пользователем отправлят майлеру:
<?
include 'head.php';
include 'dan.php';
$zag=" регистрация";
include 'zag.php';
print "<form action=\"mainreg.php\" method=\"post\">";
print"<b>Все поля обязательны!<br></b><br/>
Адрес сайта:<br> <input name=\"adres\" value=\"http://\"/><br/>
Имя сайта:<br> <input name=\"name\" maxlength=\"15\"/><br/>
Пароль:<br> <input name=\"pasword\" maxlength=\"15\"/><br/>
Е-мэил:<br> <input name=\"email\" maxlength=\"40\"/><br/>
Описание сайта:<br> <input name=\"opisan\" maxlength=\"300\"/><br/>
<input type=\"submit\" value=\"Регистировать\"/>
</form>";
include 'end.php';
?>
|
Теперь мне нужно вписать код для отправки данных который приведен выше. Вообщем мне это еще трудно переварить и я не могу понять его нужно после самой формы вписывать? | |
| |
|
|
| |
|
|
| |
для: 31
(25.07.2006 в 17:03)
| | | Этот код должен быть в файле mainreg.php.
А если это и есть этот файл, то можно в форму включить скрытое (hidden) поле, например
<input type="hidden" name="action" value="mail">
|
И проверять установлен ли этот параметр:
<?php
if($_POST['action'] == 'mail'){
// Отправка
}else{
include 'head.php';
include 'dan.php'; $zag=" регистрация";
include 'zag.php';
print "<form action=\"mainreg.php\" method=\"post\">";
print"<b>Все поля обязательны!<br></b><br/>
Адрес сайта:<br> <input name=\"adres\" value=\"http://\"/><br/>
Имя сайта:<br> <input name=\"name\" maxlength=\"15\"/><br/>
Пароль:<br> <input name=\"pasword\" maxlength=\"15\"/><br/>
Е-мэил:<br> <input name=\"email\" maxlength=\"40\"/><br/>
Описание сайта:<br> <input name=\"opisan\" maxlength=\"300\"/><br/>
<input type=\"submit\" value=\"Регистировать\"/>
<input type=\"hidden\" name=\"action\" value=\"mail\">
</form>";
include 'end.php';
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: ЯR
(25.07.2006 в 17:12)
| | | Кажется теперь я что то понял! Да конечно! Этот файл есть и в нем уже обработаны переменые! Сглупил я немного. Несовсем я понял для чего в форму включить скрытое поле? Объясните мне пожалуйста!
И переменные уже обработаны
if($adres!="" & $name!="" & $pasword!="" & $email!="" & $opisan!=""){
$adres=trim(htmlspecialchars(stripslashes($adres)));
$name=trim(htmlspecialchars(stripslashes($name)));
$pasword=trim(htmlspecialchars(stripslashes($pasword)));
$email=trim(htmlspecialchars(stripslashes($email)));
$opisan=trim(htmlspecialchars(stripslashes($opisan)));
Теперь мне осталось только правильно вписать код для отправки данных на мейл. | |
| |
|
|
| |
|
|
| |
для: 31
(25.07.2006 в 17:23)
| | | Если это другой файл (не тот, в котором форма), то скрытое поле не нужно.
А если отправка происходит в том-же файле, то необходимо сделать так, как я написал выше, чтобы не отправилось пустое письмо и не было ошибок. | |
| |
|
|
| |
|
|
| |
для: 31
(25.07.2006 в 17:23)
| | | Но файл mainreg.ph это уже другой файл...а этот файл rega.php он и передает данные файлу mainreg.php | |
| |
|
|
| |
|
|
| |
для: 31
(25.07.2006 в 17:38)
| | | Ну тогда скрытое поле не нужно. | |
| |
|
|
| |
|
|
| |
для: 31
(25.07.2006 в 17:38)
| | | У меня выдает ошибку типо :Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in n:\home\localhost\www\dtop\rega.php on line 30
Вот посмотрите пожалуйста файл mainreg.php:
<?
include 'head.php';
include 'dan.php';
$zag="Регистрация";
include 'zag.php';
if($adres!="" & $name!="" & $pasword!="" & $email!="" & $opisan!=""){
$adres=trim(htmlspecialchars(stripslashes($adres)));
$name=trim(htmlspecialchars(stripslashes($name)));
$pasword=trim(htmlspecialchars(stripslashes($pasword)));
$email=trim(htmlspecialchars(stripslashes($email)));
$opisan=trim(htmlspecialchars(stripslashes($opisan)));
$dir = @opendir ($site);
while ($flud = readdir ($dir)){
if($flud!="." & $flud!=".." ){
$file=@file("$site/$flud");
$file=explode("|<br/>|", $file[0]);
if($adres==$file[1]){$adres=""; $nomber=$file[0];}
}
}
if($adres!=""){
$vsego=@file("$pdan/vsego.dat");
$vsego=trim($vsego[0]);
$vsego=$vsego+1;
$fp=@fopen("$pdan/vsego.dat","w");
@fputs($fp,$vsego);
@fclose($fp);
@chmod ("$pdan/vsego.dat", 0777);
$fp=@fopen("$site/$vsego.dat","w");
@fputs($fp,"$vsego|<br/>|$adres|<br/>|$name|<br/>|$pasword|<br/>|$email|<br/>|$opisan|<br/>|$time");
@fclose($fp);
@chmod ("$site/$vsego.dat", 0777);
$fp=@fopen("$rek/$vsego.dat","w");
@fputs($fp,"0|<br/>|0|<br/>|0");
@fclose($fp);
@chmod ("$rek/$vsego.dat", 0777);
$fp=@fopen("$online/$vsego.dat","w");
@fclose($fp);
@chmod ("$online/$vsego.dat", 0777);
$kod="<a href=\"$put/index.php?did=$vsego\"><img skr=\"$put/count.php?did=$vsego\" alt=\"$alt\"/></a>";
$kod=htmlspecialchars(stripslashes($kod));
print"Регистрация прошла удачно, номер регистрации: $vsego<br/>Код счетчика:<br/> $kod";
} else {print"Регистрация сайта с таким номером уже существует! Номер регистрации - $nomber<br/> <a href=\"rega.php\">Вернутся</a>";}
} else {print"Заполните все поля!<br/> <a href=\"rega.php\">Вернутся</a>";}
include 'end.php';
?>
|
Я может уже надоедлив, но прошу прощения. Теперь вот сам кусочек скрипта который мне будет присылать инфрмацию можно сразу вписать после include'zag.php'? | |
| |
|
|
| |
|
|
| |
для: 31
(25.07.2006 в 17:47)
| | | Лучше сделай так:
<?
include 'head.php';
include 'dan.php';
$zag="Регистрация";
include 'zag.php';
if($_POST['adres']!="" && $_POST['name']!="" && $_POST['pasword']!="" && $_POST['email']!="" && $_POST['opisan']!=""){
$adres=trim(htmlspecialchars(stripslashes($_POST['adres'])));
$name=trim(htmlspecialchars(stripslashes($_POST['name'])));
$pasword=trim(htmlspecialchars(stripslashes($_POST['pasword'])));
$email=trim(htmlspecialchars(stripslashes($_POST['email'])));
$opisan=trim(htmlspecialchars(stripslashes($_POST['opisan'])));
// Отправка
if($dir = @opendir ($site)){
while ($flud = readdir ($dir)){
if($flud!="." & $flud!=".." ){
$file=@file("$site/$flud");
$file=explode("|<br/>|", $file[0]);
if($adres==$file[1]){$adres=""; $nomber=$file[0];}
}
}
}else exit('Ошибка при открытии директории');
if($adres!=""){
$vsego=@file("$pdan/vsego.dat");
$vsego=trim($vsego[0]);
$vsego=$vsego+1;
if($fp = fopen("$pdan/vsego.dat","w")){
@fputs($fp,$vsego);
@fclose($fp);
@chmod ("$pdan/vsego.dat", 0777);
}exit('Ошибка при открытии файла');
if($fp = fopen("$site/$vsego.dat","w")){
@fputs($fp,"$vsego|<br/>|$adres|<br/>|$name|<br/>|$pasword|<br/>|$email|<br/>|$opisan|<br/>|$time");
@fclose($fp);
@chmod ("$site/$vsego.dat", 0777);
}exit('Ошибка при открытии файла');
if($fp = fopen("$rek/$vsego.dat","w")){
@fputs($fp,"0|<br/>|0|<br/>|0");
@fclose($fp);
@chmod ("$rek/$vsego.dat", 0777);
}exit('Ошибка при открытии файла');
if($fp = fopen("$online/$vsego.dat","w")){
@fclose($fp);
@chmod ("$online/$vsego.dat", 0777);
}exit('Ошибка при открытии файла');
$kod="<a href=\"$put/index.php?did=$vsego\"><img skr=\"$put/count.php?did=$vsego\" alt=\"$alt\"/></a>";
$kod = htmlspecialchars(stripslashes($kod));
print"Регистрация прошла удачно, номер регистрации: $vsego<br/>Код счетчика:<br/> $kod";
} else {print"Регистрация сайта с таким номером уже существует! Номер регистрации - $nomber<br/> <a href=\"rega.php\">Вернутся</a>";}
} else {print"Заполните все поля!<br/> <a href=\"rega.php\">Вернутся</a>";}
include 'end.php';
?>
|
И посмотри, что выдаст.
И e-mail то лучше регулярным выражением проверять, как я писал. | |
| |
|
|
| |
|
|
| |
для: ЯR
(26.07.2006 в 05:20)
| | | У меня пишет : Ошибка при открытии файла | |
| |
|
|
| |
|
|
| |
для: 31
(26.07.2006 в 18:07)
| | | может ты переменную pdan не задал? или неправильно задал. Так же можешь попробовать открыть файл с параметром "a" вместо "w". | |
| |
|
|
| |
|
|
| |
для: ЯR
(27.07.2006 в 02:48)
| | | Да нет, переменную вроде правильно задал. С параметром a тоже неполучается, тут нужно чтобы новый файл создавался. | |
| |
|
|
| |
|
|
| |
для: 31
(27.07.2006 в 15:47)
| | | Он и будет создаваться при параметре "а".
Просто при w файл будет перезаписываться, а при "а" -- пишется в конец файла. | |
| |
|
|