[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регистрация пользователей
Gans1g
Сам написал код но при добовление данных из формы в БД не чего не происходит проста белый лист появляться а далжно написано что типа данные попали в БД и на мыло письмо пришло с подтверждением
вот код.. зарание спс сильно не бить.. ибо новенький =)) гдето может и написан бред.. user posted image
PHP
<?php
include "config.php";
function 
search_login($logins)  
{  
@
mysql_query("SELECT * FROM userlist WHERE logins='".strtolower($logins)."'");
}

function 
search_nick($nick)  
{  
@
mysql_query("SELECT * FROM userlist WHERE nick='".strtolower($nick)."'");
}

if(isset(
$_POST['logins'])) {$logins $_POST['logins'];}
if(isset(
$_POST['passwords'])) {$passwords $_POST['passwords'];}
if(isset(
$_POST['rpasswords'])) {$rpasswords $_POST['rpasswords'];}
if(isset(
$_POST['email'])) {$email $_POST['email'];}
if(isset(
$_POST['name'])) {$name $_POST['name'];}
if(isset(
$_POST['fameli'])) {$fameli $_POST['fameli'];}
if(isset(
$_POST['world'])) {$world $_POST['world'];}
if(isset(
$_POST['gorod'])) {$gorod $_POST['gorod'];}
if(isset(
$_POST['nick'])) {$nick $_POST['nick'];}
if(isset(
$_POST['icq'])) {$icq $_POST['icq'];}
if(isset(
$_POST['registr'])) {$registr $_POST['registr'];}

//Кодирование обратных слешей
$logins stripslashes($logins);  
$passwords stripslashes($passwords);
$rpasswords stripslashes($rpasswords);
$email stripslashes($email);  
$name stripslashes($name);
$fameli stripslashes($fameli);
$world stripslashes($world);
$gorod stripslashes($gorod);
$nick stripslashes($nick);
$icq stripslashes($icq);

//Удаление пробелов  
$logins trim($logins);  
$passwords trim($passwords);  
$rpasswords trim($rpasswords); 
$email trim($email);  
$name trim($name);  
$fameli trim($fameli); 
$world trim($world);  
$gorod trim($gorod);  
$nick trim($nick);
$icq trim($icq);

if (isset(
$registr))

{

if(empty(
$logins))
{
echo 
"<p>Вы не ввели логин!</p>";    
}
elseif(
search_login($logins)) {print "NO";}

if(empty(
$passwords) || empty($rpasswords) || $passwords != $rpasswords
{
echo 
"<p>Введенные пароли не совподают!</p>";    
}

if(
strlen("$passwords") < 3)
{
print 
"<p>Пароль не должен содержать меньше 3 символов!</p>";    
}

if (!
preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i",  $email))
{
echo 
"<p>Вы ввели не корректно свой e-mail!</p>";    
}

if(empty(
$name))
{
echo 
"<p>Вы не ввели Имя!</p>";    
}

if(empty(
$fameli))
{
echo 
"<p>Вы не ввели Фамилию!</p>";    
}

if(empty(
$gorod))
{
echo 
"<p>Вы не ввели Город!</p>";    
}

if(empty(
$nick))
{
echo 
"<p>Вы не ввели Ник!</p>";    
}
elseif(
search_login($nick)) {print "NO";}
exit();

//Осуществляем регистарацию
//Генерируем uniq_id
$uniq_id md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime());
$passwords $_POST['passwords'];
$email $_POST['email'];

$reg mysql_query("INSERT INTO userlist VALUES ('".strtolower($logins)."','".md5($passwords)."','".$email."','".$name."','".$fameli."','".$world."','".$gorod."','".$nick."','".$icq."','".date("dmY")."','".$uniq_id."')");

//После запроса отправляем письмо юзеру, для активации аккаунта
if($reg) {

// Для отправки e-mail в виде HTML устанавливаем необходимый mime-тип и кодировку
$headers  'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=windows-1251' "\r\n";

// Откуда пришло
$headers .= 'From:Сайт %sitename%' "\r\n";

//Здесь укажите электронный адрес, куда будут уходить сообщения
$mailto $email;
$subject "Подтверждение регистарции на сайте";
$message 'Для активации аккаунта пройдите по следующей ссылке <a href="http://АДРЕС_САЙТА/registration.php?

activation='
.$uniq_id.'" target="_blank">http://АДРЕС_САЙТА/registration.php?activation='.$uniq_id.'</a>';
$message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите enter.';
//Отправляем сообщение
if(sendmail($mailto,$subject,$message,$headers) !== FALSE)
echo 
'Регистрация завершена, на введеный Вами e-mail было отправлено сообщение для активации аккаунта';



}

//Модуль отвечающий за активацию аккаунта

if($_GET['activation'] AND $_GET['activation']!=''
$uniq_id $_GET['activation'];
//Создаем запрос
$rer=@mysql_query("UPDATE userlist SET status=1 WHERE uniq_id='".$uniq_id."' AND status=0");
if(
$reg) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Теперь вы можете <a href="index.php">войти на сайт</a> используя данные указанные при регистрации';}

else {echo 
'Активация невозможна: профиль уже активирован';}

}





Спустя 1 час, 10 минут, 24 секунды (2.04.2009 - 12:37) twin написал(а):
search_login($logins)
вот эта функция, как впрочем и вторая, ничего не возвращает, а значит проверка бесполезна.

PHP
//Кодирование обратных слешей
$logins stripslashes($logins);

Вообще это скорее "раскодирование", хотя даже из названия видно, что эта функция просто убирает бэкслэши. То есть это явное приглашение хакерам. Если их убирать, то нужно обработать строковые константы функцией mysql_escape_string(), а числовые intval(). Убирать бэкслэши нужно, если включена директива magic_quotes_gpc Проверить это можно функцией get_magic_quotes_gpc(). Подробнее можешь почитать хотя бы тут. Там же есть кстати и рекомендации по регалке с активацией письмом.

Спустя 3 часа, 48 минут, 16 секунд (2.04.2009 - 16:25) Семён написал(а):
Воспользуйся методом отсеивания.
И укажи этап своих дейсвий, которые не работают.

Спустя 2 часа, 22 минуты, 3 секунды (2.04.2009 - 18:47) Kuliev написал(а):
Gans1g
Вывод ошибок я бы тебе посоветовал сделать так
ПРИМЕР Можешь использовать массив, в общем как твоя фантазия сработает!
PHP
<?
$error "";

if(empty(
$_POST['login'])){$error=. "нет имени<br> <a href='gostevo.php'>Вернуться на главную.</a><br>";}
if(empty(
$_POST['password'])){$error=. "нет email<br> <a href='gostevo.php'>Вернуться на главную.</a><br>";}
if(empty(
$_POST['url'])){$error=. "нет сайта<br> <a href='gostevo.php'>Вернуться на главную.</a><br>";}
if(empty(
$_POST['text'])){$error=. "нет текста<br> <a href='gostevo.php'>Вернуться на главную.</a><br>";}

if (
$error != "")
{

// Выдаем ошибку

}
else
{

// Обрабатываем переменные




В таком варианте пользователь увидит все ошибки которые он сделал!!!

Спустя 18 часов, 44 минуты, 42 секунды (3.04.2009 - 13:32) Gans1g написал(а):
спс всем кто ответил... Kuliev и twin воспользовался вашими подсказками..получилось нормально..даже и не предстовлял себе что из масивва можна ошибки делать..толька вот все равно где то ошибку дапустил в коде user posted image ошибок нету..уже после нажатие кнопки должно отправиться сообщени и написано что мол все ок иди на почту =) НО страница тупа обновляеться и все... я понимаю не кому не хочется разберать чужой код..если все таки время найдется посмотрите пожалуйста

PHP
<?php
include "config.php";

if(isset(
$_POST['logins'])) {$logins $_POST['logins'];}
if(isset(
$_POST['passwords'])) {$passwords $_POST['passwords'];}
if(isset(
$_POST['rpasswords'])) {$rpasswords $_POST['rpasswords'];}
if(isset(
$_POST['email'])) {$email $_POST['email'];}
if(isset(
$_POST['name'])) {$name $_POST['name'];}
if(isset(
$_POST['fameli'])) {$fameli $_POST['fameli'];}
if(isset(
$_POST['world'])) {$world $_POST['world'];}
if(isset(
$_POST['gorod'])) {$gorod $_POST['gorod'];}
if(isset(
$_POST['nick'])) {$nick $_POST['nick'];}
if(isset(
$_POST['icq'])) {$icq $_POST['icq'];}


//Удаление пробелов  
$logins trim($logins);  
$passwords trim($passwords);  
$rpasswords trim($rpasswords); 
$email trim($email);  
$name trim($name);  
$fameli trim($fameli); 
$world trim($world);  
$gorod trim($gorod);  
$nick trim($nick);
$icq trim($icq);

$array_error = array();
if(isset(
$_POST['registr']))
{
if(!
$logins)  
$array_error[0] = "Вы не написали логин.";

if(empty(
$passwords) || empty($rpasswords) || $passwords != $rpasswords)
$array_error[1] = "Пароли не совподают.";
elseif(
$passwords && strlen($passwords) < 8
$array_error[2] = "Длина пароля меньше 8 символов.";

if(!
$email)  
$array_error[3] = "Вы не написали E-mail."
elseif(!
preg_match("/^[a-z0-9_.-]+@([a-z0-9_]+.)+[a-z]{2,4}$/",$email) && $email
$array_error[4] = "E-mail написан не корректно";


if(!
$name)  
$array_error[5] = "Вы не написали имя.";

if(!
$fameli)  
$array_error[6] = "Вы не написали фамилию.";

if(!
$gorod)  
$array_error[7] = "Вы не написали город.";

if(!
$nick)  
$array_error[8] = "Вы не написали ник.";

}

//Осуществляем регистарацию
//Генерируем uniq_id
$uniq_id md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime());
$pass $_POST['passwords'];
$email $_POST['email'];

$reg = @mysql_query("INSERT INTO userlist VALUES(NULL,'".strtolower($logins)."','".md5($passwords)."','".$email."','".$name."','".$fameli."','".$world."','".$gorod."','".$nick."','".$icq."','".$uniq_id."','".date("dmY")."')");
if(
$reg) {

// Для отправки e-mail в виде HTML устанавливаем необходимый mime-тип и кодировку
$headers  'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=windows-1251' "\r\n";

// Откуда пришло
$headers .= 'From:Сайт %sitename%' "\r\n";

//Здесь укажите электронный адрес, куда будут уходить сообщения
$mailto $email;
$subject "Подтверждение регистарции на сайте";
$message 'Для активации аккаунта пройдите по следующей ссылке <a href="http://АДРЕС_САЙТА/registration.php?

activation='
.$uniq_id.'" target="_blank">http://АДРЕС_САЙТА/registration.php?activation='.$uniq_id.'</a>';
$message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите enter.';
//Отправляем сообщение
if(sendmail($mailto,$subject,$message,$headers) !== FALSE)
{echo 
'Регистрация завершена, на введеный Вами e-mail было отправлено сообщение для активации аккаунта';}



//Модуль отвечающий за активацию аккаунта

if($_GET['activation'] AND $_GET['activation']!='') {

$uniq_id $_GET['activation'];
//Создаем запрос
$r=@mysql_query("UPDATE userlist SET status=1 WHERE uniq_id='".$uniq_id."' AND status=0");
if(
$r) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Теперь вы можете <a href="index.php">войти на сайт</a> используя данные указанные при регистрации';}

else {echo 
'Активация невозможна: профиль уже активирован';}
}
}

Спустя 19 минут, 33 секунды (3.04.2009 - 13:52) Kuliev написал(а):
Gans1g

Сделай вывод все ошибок
в самом начале скрипта напиши
PHP
<? 
error_reporting(E_ALL);

// Второе у тебя не выводятся ошибки в случае если пользователь не корректно заполнил форму

$array_error = array();
if(isset(
$_POST['registr']))
{
if(!
$logins)  
$array_error[0] = "Вы не написали логин.";

if(empty(
$passwords) || empty($rpasswords) || $passwords != $rpasswords)
$array_error[1] = "Пароли не совподают.";
elseif(
$passwords && strlen($passwords) < 8
$array_error[2] = "Длина пароля меньше 8 символов.";

if(!
$email)  
$array_error[3] = "Вы не написали E-mail."
elseif(!
preg_match("/^[a-z0-9_.-]+@([a-z0-9_]+.)+[a-z]{2,4}$/",$email) && $email
$array_error[4] = "E-mail написан не корректно";


if(!
$name)  
$array_error[5] = "Вы не написали имя.";

if(!
$fameli)  
$array_error[6] = "Вы не написали фамилию.";

if(!
$gorod)  
$array_error[7] = "Вы не написали город.";

if(!
$nick)  
$array_error[8] = "Вы не написали ник.";

}
// Проверяем есть ли ошибки

if ( count($array_error) > 0)
 
 
// Выводим ошибки на экран
{
    for (
$i  0$i count($array_error); $i++)
          
     {
            echo 
$array_error[$i]."<br>";
      }
}
else
{

// Все в порядке записываем в БД

}
   



Спустя 35 минут, 59 секунд (3.04.2009 - 14:28) Gans1g написал(а):
такие ошибки что означают? Notice: Undefined offset: и Notice: Undefined variable ? перевел но так и не чего и не понял..

Спустя 1 час, 36 минут, 41 секунда (3.04.2009 - 16:04) Kuliev написал(а):
Цитата (Gans1g @ 3.04.2009 - 11:28)
такие ошибки что означают? Notice: Undefined offset: и Notice: Undefined variable ? перевел но так и не чего и не понял..

Пишет что у тебя неопределенная переменная, выложи код и скажи на каких строчках выдает ошибки!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.