<?
//Код проверки ввода данных в форму//
if (empty($regform)){
if (empty($nik)){ $u_mass[] = "Ник"; }
if (empty($name)){ $u_mass[] = "Имя пользователя"; }
if (empty($contact)){ $u_mass[] = "Телефон"; }
if (empty($password)){ $u_mass[] = "Пароль"; }}
if (empty($u_mass)){ $m_status = 1; } else { $m_status = 0; }
//Конец кода//
//Предупреждение о неполном вводе//
if ($m_status == 0){ echo ("Пожалуйста заполните форму: ");
for ($i=0;$i<count($u_mass);$i++){ echo ("$u_mass[$i] "); }}
//Конец кода//
//Тех.операция - конект :)//
else { echo ("Все поля формы заполнены.<br>");
$connect = mysql_connect ("localhost","root");
$data = mysql_select_db ("portal");
$t_nik = "select*from client where nik ='".$nik."'";
$r_nik = mysql_query ($t_nik);
//Конец кода//
//Проверка юзера по нику//
if (!$r_nik){ КОД ДОБАВЛЕНИЯ ЗАПИСИ В ТАБЛИЦУ }
else {СООБЩЕНИЕ "ТАКОЙ ЮЗЕР ЕСТЬ" }
mysql_close();}
Ну дак вот почемуто даже если такого ника нет в таблице, выводиться "ТАКОЙ ЮЗЕР ЕСТЬ".Как вы наверное уже догадались данные заносятся из формы.
Спустя 59 минут, 15 секунд (10.07.2008 - 12:08) alexander.pro написал(а):
Спасибо! А если надо сделать сразу две проверки, что'б только в результате истиности этих двух проверок, писала в базу.Например одновременная проверка ника и имени.
Спустя 2 минуты, 46 секунд (10.07.2008 - 12:11) Professor написал(а):
в общем,
if(!$r_nik)
ты этим условием проверяешь, прошел запрос или нет
А если так, то
то проверяешь нашел ли он что нибудь
if(!$r_nik)
ты этим условием проверяешь, прошел запрос или нет
А если так, то
Код
$total = mysql_query ($t_nik);
$r_nik=mysql_fetch_array($total);
$r_nik=mysql_fetch_array($total);
то проверяешь нашел ли он что нибудь
Спустя 47 секунд (10.07.2008 - 12:12) Professor написал(а):
Опаздал=))
Спустя 8 минут, 14 секунд (10.07.2008 - 12:20) alexander.pro написал(а):
Такая фигня появилась.Если вводишь в форму запись идентичную записи в таблице, то "ужу есть", а если вместо паролься в форме написать "password" ,регистрит любого пользователя.
Спустя 7 минут, 41 секунда (10.07.2008 - 12:28) Niemand написал(а):
Цитата(Вебмастер @ 10.7.2008, 13:05) [snapback]42891[/snapback]
$total=mysql_num_rows($result); // читаем количество рядов
if ($total>0)
{
echo"Такое имя ужу зарегистрированно, выберите пожалуйста другое!";
exit();
}
if ($total>0)
{
echo"Такое имя ужу зарегистрированно, выберите пожалуйста другое!";
exit();
}
для подсчета кол-ва рядов не нужно использовать fetch_array, вы же не собираетесь работать с данными? используем num_rows. кроме того, fetch-массив не даст вам значение больше нуля.
кроме того в запросе
SELECT * FROM `userlist
достаточно выбрать одно поле (например индекс), опять же из тех же соображений, да и работать быстрее будет.
а еще у меня подозрения, что у вас включены globals. выключите, запишите все данные в переменные через $_POST (или $_GET, в зависимости от метода)
Спустя 14 минут (10.07.2008 - 12:42) Niemand написал(а):
Цитата(alexander.pro @ 10.7.2008, 13:20) [snapback]42899[/snapback]
Такая фигня появилась.Если вводишь в форму запись идентичную записи в таблице, то "ужу есть", а если вместо паролься в форме написать "password" ,регистрит любого пользователя.
весь код в студию и пожалуйста используйте тэги кода
Спустя 3 минуты, 19 секунд (10.07.2008 - 12:45) Niemand написал(а):
Цитата(Вебмастер @ 10.7.2008, 13:30) [snapback]42905[/snapback]
жигули - тоже машина, еще и ездит )
Спустя 1 час, 36 минут, 18 секунд (10.07.2008 - 14:21) alexander.pro написал(а):
Никогда не понимал, зачем отключать globals.Что мне это даст?
Спустя 5 часов, 13 минут, 10 секунд (10.07.2008 - 19:35) Marty написал(а):
Пользуюсь случаем. Есть ворос. Как правильно сформировать запрос с LIKE и переменной. Не получается никак.
Переменная $сh и поиск с любым вхождением
$res = mysql_query("SELECT Name FROM `Table` WHERE Name LIKE `$`+ '$ch' + `$` ") ;
Проблема с формированием строки и кавычками в конце запроса совместно с `$` Как правильно сформировать строку?
Переменная $сh и поиск с любым вхождением
$res = mysql_query("SELECT Name FROM `Table` WHERE Name LIKE `$`+ '$ch' + `$` ") ;
Проблема с формированием строки и кавычками в конце запроса совместно с `$` Как правильно сформировать строку?
Спустя 1 час, 25 минут, 3 секунды (10.07.2008 - 21:00) Dezigo написал(а):
Цитата(Marty @ 10.7.2008, 16:35) [snapback]43051[/snapback]
Пользуюсь случаем. Есть ворос. Как правильно сформировать запрос с LIKE и переменной. Не получается никак.
Переменная $сh и поиск с любым вхождением
$res = mysql_query("SELECT Name FROM `Table` WHERE Name LIKE `$`+ '$ch' + `$` ") ;
Проблема с формированием строки и кавычками в конце запроса совместно с `$` Как правильно сформировать строку?
что значит +?Переменная $сh и поиск с любым вхождением
$res = mysql_query("SELECT Name FROM `Table` WHERE Name LIKE `$`+ '$ch' + `$` ") ;
Проблема с формированием строки и кавычками в конце запроса совместно с `$` Как правильно сформировать строку?
Спустя 46 минут, 24 секунды (10.07.2008 - 21:46) redow написал(а):
alexander.pro, отключается для безопастности.
Marty, вот так запрос
в пхп соединения происходят не "+" а "."
Marty, вот так запрос
Код
$res = mysql_query("SELECT Name FROM `Table` WHERE Name LIKE `%".$ch."%` ");
в пхп соединения происходят не "+" а "."
Спустя 11 часов, 4 минуты, 38 секунд (11.07.2008 - 08:51) Marty написал(а):
Спасибо redow, написал как вы подсказали. Но вот что вываливает.....
Unknown column '%значение моей переменной ch%' in 'where clause'
$res = mysql_query("SELECT Name FROM `Table` WHERE Name LIKE `%".$ch."%` ");
Unknown column '%значение моей переменной ch%' in 'where clause'
$res = mysql_query("SELECT Name FROM `Table` WHERE Name LIKE `%".$ch."%` ");
Спустя 17 минут, 21 секунда (11.07.2008 - 09:08) Marty написал(а):
все спасибо разобрался
Спустя 5 часов, 17 минут, 12 секунд (11.07.2008 - 14:25) alexander.pro написал(а):
Пожалуйста прокоментируйте готовый код системы регистрации.Напишите, что лишнее, а что нужно добавить.
Вот код:
//Удаляем пробелы,слеши,символы//
$nik = trim(strtolower(htmlspecialchars(stripcslashes(@$_GET['nik']))));
$name = trim(strtolower(htmlspecialchars(stripcslashes(@$_GET['name']))));
$password = trim(strtolower(htmlspecialchars(stripcslashes(@$_GET['passw']))));
//Проверяем форму если одна из трёх пуста, записываем в массив//
if (empty($regform)){
if (empty($nik)){ $u_mass[] = "Ник"; }
if (empty($name)){ $u_mass[] = "Имя пользователя"; }
if (empty($password)){ $u_mass[] = "Пароль"; }}
if (empty($u_mass)){ $m_status = 1; } else { $m_status = 0; }
//Проверяем существует ли массив если нет, то//
if ($m_status == 0){ echo ("Пожалуйста заполните форму: ");
for ($i=0;$i<count($u_mass);$i++){ echo ("$u_mass[$i] "); }}
//Соединяемся с базой данных и проверяем данные//
else { echo ("Все поля формы заполнены.<br>");
$connect = mysql_connect ("localhost","root");
$data = mysql_select_db ("portal");
$string = mysql_query("select*from client");
$num = mysql_num_rows($string);
$t_nik = mysql_query("select*from client where nik ='$nik'");
$r_nik = mysql_fetch_array($t_nik);
if (!$r_nik > 0){
$num = $num+1;
$contact = ("$nik@portal.ru");
$rec = "insert into client (c_no,nik,name,email,passw) values ('".$num."','".$nik."','".$name."','".$contact."','".$password."')";
$result = mysql_query($rec); if ($result) { echo ("Успешно добавлен");}}
else { echo ("Пользователь с таким ником уже существует.<br><a href = inst.php>Правила регистрации.</a>");}
mysql_close();}
Вот код:
//Удаляем пробелы,слеши,символы//
$nik = trim(strtolower(htmlspecialchars(stripcslashes(@$_GET['nik']))));
$name = trim(strtolower(htmlspecialchars(stripcslashes(@$_GET['name']))));
$password = trim(strtolower(htmlspecialchars(stripcslashes(@$_GET['passw']))));
//Проверяем форму если одна из трёх пуста, записываем в массив//
if (empty($regform)){
if (empty($nik)){ $u_mass[] = "Ник"; }
if (empty($name)){ $u_mass[] = "Имя пользователя"; }
if (empty($password)){ $u_mass[] = "Пароль"; }}
if (empty($u_mass)){ $m_status = 1; } else { $m_status = 0; }
//Проверяем существует ли массив если нет, то//
if ($m_status == 0){ echo ("Пожалуйста заполните форму: ");
for ($i=0;$i<count($u_mass);$i++){ echo ("$u_mass[$i] "); }}
//Соединяемся с базой данных и проверяем данные//
else { echo ("Все поля формы заполнены.<br>");
$connect = mysql_connect ("localhost","root");
$data = mysql_select_db ("portal");
$string = mysql_query("select*from client");
$num = mysql_num_rows($string);
$t_nik = mysql_query("select*from client where nik ='$nik'");
$r_nik = mysql_fetch_array($t_nik);
if (!$r_nik > 0){
$num = $num+1;
$contact = ("$nik@portal.ru");
$rec = "insert into client (c_no,nik,name,email,passw) values ('".$num."','".$nik."','".$name."','".$contact."','".$password."')";
$result = mysql_query($rec); if ($result) { echo ("Успешно добавлен");}}
else { echo ("Пользователь с таким ником уже существует.<br><a href = inst.php>Правила регистрации.</a>");}
mysql_close();}
Спустя 5 часов, 42 минуты, 20 секунд (11.07.2008 - 20:08) sergeiss написал(а):
Если честно, то я не глубоко вникал в написанное... Поэтому советы чисто по структуре языка (в основном на основе тех граблей, по которым сам попрыгал ).
0. Лучше через POST передавать, чтобы не было видно в явном виде передаваемые переменные. У тебя же тут и ник, и пароль...
1. Лучше не empty, а isset использовать для проверки. И назначение в переменные делать уже после проверки.
Типа такого:
if( isset( $_GET['nik']) ) $u_mass['nik']=trim(strtolower(htmlspecialchars(stripcslashes($_GET['nik']))));
При этом получаем следующее:
а) Проверка и назначение рядом, проще искать ошибки (если будут) и корректировать (если понадобится);
б) Назначение будет сделано только в случае, если переменная передана
в) я предпочитаю делать в подобной ситуации ассоциативный массив - это просто изумительная вещь, которой нету практически ни в одном языке
2. Проверку
--- if (empty($u_mass)){ $m_status = 1; } else { $m_status = 0; } ---
лучше заменить на более изящную, простую и понятную
--- $m_status = isset( $u_mass) ); ---
И далее ты можешь смело писать, if( $m_status ), подразумевая if( $m_status == true ) или if( !$m_status ) для сравнения с false.
3. Запрос можно упростить (чисто грамматически, чтоб прозрачнее был)
Вместо ('".$num."','".$nik."','".$name."','".$contact."','".$password."') напиши ('$num','$nik','$name','$contact','$password'). Все замены на величины из переменных будут сделаны.
0. Лучше через POST передавать, чтобы не было видно в явном виде передаваемые переменные. У тебя же тут и ник, и пароль...
1. Лучше не empty, а isset использовать для проверки. И назначение в переменные делать уже после проверки.
Типа такого:
if( isset( $_GET['nik']) ) $u_mass['nik']=trim(strtolower(htmlspecialchars(stripcslashes($_GET['nik']))));
При этом получаем следующее:
а) Проверка и назначение рядом, проще искать ошибки (если будут) и корректировать (если понадобится);
б) Назначение будет сделано только в случае, если переменная передана
в) я предпочитаю делать в подобной ситуации ассоциативный массив - это просто изумительная вещь, которой нету практически ни в одном языке
2. Проверку
--- if (empty($u_mass)){ $m_status = 1; } else { $m_status = 0; } ---
лучше заменить на более изящную, простую и понятную
--- $m_status = isset( $u_mass) ); ---
И далее ты можешь смело писать, if( $m_status ), подразумевая if( $m_status == true ) или if( !$m_status ) для сравнения с false.
3. Запрос можно упростить (чисто грамматически, чтоб прозрачнее был)
Вместо ('".$num."','".$nik."','".$name."','".$contact."','".$password."') напиши ('$num','$nik','$name','$contact','$password'). Все замены на величины из переменных будут сделаны.