Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Отправка админу о регистрации
 
 автор: 31   (23.07.2006 в 03:38)   письмо автору
 
 

Скажите пожалуйста я хочу сдеать так чтобы при регистрации в системе администратору на мейл приходило сообщения о реге и данных пользователя который зарегистрировался.
вот примерно так правильно?


[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:40)   письмо автору
 
   для: 31   (23.07.2006 в 03:38)
 

тоесть на мейл :)...очень спешил.

   
 
 автор: ЯR   (23.07.2006 в 04:11)   письмо автору
 
   для: 31   (23.07.2006 в 03:38)
 

А в чём проблема?
Просто переменной allmsg присваиваете содержимое письма (после проверки на корректность данных, чтобы не хакнули) в виде html

   
 
 автор: 31   (23.07.2006 в 04:24)   письмо автору
 
   для: ЯR   (23.07.2006 в 04:11)
 

ЯR, Вы меете ввиду так:

$allmsg = '1. Имя : '.$name
          '2. Пароль: '.$password
          '3. E-mail: '.$email
          '4. Описание: '.$opisan

Посмотрите я ошибку не допустил в этом коде?

   
 
 автор: ЯR   (23.07.2006 в 04:46)   письмо автору
 
   для: 31   (23.07.2006 в 04:24)
 

лучше ещё поставить <br> после каждой строки (письмо ведь в html-формате)
и перед этим обработать их ф-ией htmlspecialchars(), т.е.:

<?php
$name 
htmlspecialchars($name);
// и т.д.
?>

   
 
 автор: 31   (23.07.2006 в 04:52)   письмо автору
 
   для: ЯR   (23.07.2006 в 04:46)
 

Вы имеете ввиду отфильтровать? Спасибо я не подумал об этом...а вообще от чего защищает функция htmlspecialchars?

   
 
 автор: ЯR   (23.07.2006 в 05:02)   письмо автору
 
   для: 31   (23.07.2006 в 04:52)
 

от встраивания html-тегов.
Например, чтобы какой-нибудь злостный тип не написал скрипт, и не украл пароль у кого-нибудь.
Например, если кто-то напишет в описании

<script>alert('Hello');</script>

, то в письме это так и отобразится, а не вызовет JavaScript-функцию.

   
 
 автор: 31   (23.07.2006 в 15:05)   письмо автору
 
   для: ЯR   (23.07.2006 в 05:02)
 

ЯR, я извиниясь конечно, но жутко интересно если злоумышленик даже впишет такой скрипт это же вреда не принесет? Но например если вписать в скрипт какой -нибудь шел то взлоумышленник может им воспользоваться? Или он не будет выполнятся?
Спасибо.

   
 
 автор: cheops   (23.07.2006 в 15:19)   письмо автору
 
   для: 31   (23.07.2006 в 15:05)
 

Злоумышленик может вписать в JavaScript, который будет собирать cookie пользователя и отправлять на другую машину или осуществлять перенаправление на другой сайт.

   
 
 автор: 31   (24.07.2006 в 18:15)   письмо автору
 
   для: cheops   (23.07.2006 в 15:19)
 

А вот к примеру можно так обработать переменные:
$name = htmlspecialchars($name);
$password=htmlspecialchars($password)
$email=htmlspecialchars($email)
$opisan=htmlspecialchars($opisan)

   
 
 автор: ЯR   (25.07.2006 в 03:10)   письмо автору
 
   для: 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();
}
?>

   
 
 автор: 31   (25.07.2006 в 16:17)   письмо автору
 
   для: ЯR   (25.07.2006 в 03:10)
 

Что-то не получается у меня. Для меня это пока еще не так легко. А может это нужно написать перед самой формой все это, а не тут? Ведь тут просто идет сбор информации для отправки его на email.

   
 
 автор: ЯR   (25.07.2006 в 16:31)   письмо автору
 
   для: 31   (25.07.2006 в 16:17)
 

> Что-то не получается у меня.
А что не получается?

> Ведь тут просто идет сбор информации для отправки его на email.
Так ведь именно перед отправкой и надо проверить, верны ли данные, когда они уже введены.

   
 
 автор: 31   (25.07.2006 в 17:03)   письмо автору
 
   для: Я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';
?>



Теперь мне нужно вписать код для отправки данных который приведен выше. Вообщем мне это еще трудно переварить и я не могу понять его нужно после самой формы вписывать?

   
 
 автор: ЯR   (25.07.2006 в 17:12)   письмо автору
 
   для: 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';
}
?>

   
 
 автор: 31   (25.07.2006 в 17:23)   письмо автору
 
   для: Я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)));
Теперь мне осталось только правильно вписать код для отправки данных на мейл.

   
 
 автор: ЯR   (25.07.2006 в 17:36)   письмо автору
 
   для: 31   (25.07.2006 в 17:23)
 

Если это другой файл (не тот, в котором форма), то скрытое поле не нужно.
А если отправка происходит в том-же файле, то необходимо сделать так, как я написал выше, чтобы не отправилось пустое письмо и не было ошибок.

   
 
 автор: 31   (25.07.2006 в 17:38)   письмо автору
 
   для: 31   (25.07.2006 в 17:23)
 

Но файл mainreg.ph это уже другой файл...а этот файл rega.php он и передает данные файлу mainreg.php

   
 
 автор: ЯR   (25.07.2006 в 17:40)   письмо автору
 
   для: 31   (25.07.2006 в 17:38)
 

Ну тогда скрытое поле не нужно.

   
 
 автор: 31   (25.07.2006 в 17:47)   письмо автору
 
   для: 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'?

   
 
 автор: ЯR   (26.07.2006 в 05:20)   письмо автору
 
   для: 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 то лучше регулярным выражением проверять, как я писал.

   
 
 автор: 31   (26.07.2006 в 18:07)   письмо автору
 
   для: ЯR   (26.07.2006 в 05:20)
 

У меня пишет : Ошибка при открытии файла

   
 
 автор: ЯR   (27.07.2006 в 02:48)   письмо автору
 
   для: 31   (26.07.2006 в 18:07)
 

может ты переменную pdan не задал? или неправильно задал. Так же можешь попробовать открыть файл с параметром "a" вместо "w".

   
 
 автор: 31   (27.07.2006 в 15:47)   письмо автору
 
   для: ЯR   (27.07.2006 в 02:48)
 

Да нет, переменную вроде правильно задал. С параметром a тоже неполучается, тут нужно чтобы новый файл создавался.

   
 
 автор: ЯR   (27.07.2006 в 15:53)   письмо автору
 
   для: 31   (27.07.2006 в 15:47)
 

Он и будет создаваться при параметре "а".
Просто при w файл будет перезаписываться, а при "а" -- пишется в конец файла.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования