Jump to content
  • 0

Укажите на ошибки


Ge1i0N
 Share

Question

Начал изучение php, поставил задачу себе написать простенький сервис.

Сделал скрипт регистрации пользователя, но как-то он меня не устраивает.

Покажите где я наговнокодил и ткните в ошибки.

<?phprequire_once '../includes/mysql_on.php';$login=trim($_POST['login']);$pass=trim($_POST['pass']);$mail=trim($_POST['mail']);$login=stripslashes($login);$pass=stripslashes($pass);$mail=stripslashes($mail);$login=htmlspecialchars($login);$pass=htmlspecialchars($pass);$mail=htmlspecialchars($mail); if (empty($login)) {		header('location:../index.php');		die();		}		elseif (empty($pass)) {		header('location:../index.php');		die();		}		elseif (empty($mail)) {		header('location:../index.php');		die();		}else {		$chek_db = $connect->prepare('SELECT count(*) FROM users WHERE login=?');		$chek_db->bind_param('s',$login);		$chek_db->execute();		$chek_db->bind_result($n);		$chek_db->fetch();		$chek_db->close();		if ($n==0)  {			$sign_db = $connect->prepare('INSERT INTO users(login,pass,mail) VALUES(?,?,?)');			$sign_db->bind_param('sss',$login,md5($pass),$mail);			$sign_db->execute();			$sign_db->close();			}}require_once '../includes/mysql_off.php';header('location:../index.php');?>

Что надо делать вывод сообщений что именно не так введено, а не тупо редиректить - знаю. Пока так.

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

1) ну то что выше, проверка введенных данных - это можно и в ф-цию обернуть, или хотя бы: $login=stripslashes(trim(htmlspecialchars($_POST['login'])));

2) а где сессия и куки?

3) разберите какой-нибудь примерчик, хотя бы этот: http://pyha.ru/forum/topic/109

Link to comment
Share on other sites

  • 0

Пароли не принято хранить в "открытом" виде. Минимум делайте md5(), а также можно их еще "шумом" разбавить перед записью в бд. При таком подходе не нужно пароль "чистить" функциями stripslashes и htmlspecialchars.

$pass = md5($pass . $noise)

При записи логина и почты не стоит их чистить htmlspecialchars, достаточно stripslashes. htmlspecialchars нужна при выводе этих данных на страницу, чтоб html не поламался.

Link to comment
Share on other sites

  • 0

CoDy, у него пароль и так в md5

А вот зачем ты из пароля пробелы убрал и слэши? И зачем htmlspecialchars паролю? Хочешь, чтобы они все стали легколомаемыми? Чем тебе не угодил пароль "////", что ты на него выдаёшь ошибку? Тем более, что он всё равно пойдёт в md5. Напоминает ситуацию со всякими mail.ru или где там, которые требуют для пароля только латинские буквы и цифры. Такое ощущение, что хотят облегчить работу ФСБ. А например, пароль "/ /" у тебя пройдёт, хотя состоит из пробелов. Ты уж если вырезаешь, вырезай их все. Кстати, такой логин тоже пройдёт.

Корректность почтового адреса забыл проверить.

if (empty($login)) {	header('location:../index.php');	die();}elseif (empty($pass)) {	header('location:../index.php');	die();}elseif (empty($mail)) {	header('location:../index.php');	die();}
==

if (empty($login) || empty($pass)|| empty($mail)) {	header('location:../index.php');	die();}
Link to comment
Share on other sites

  • 0
А вот зачем ты из пароля пробелы убрал и слэши? И зачем htmlspecialchars паролю?

На ошибках учатся. Делал ночью, голова плохо соображала.

 

1) ну то что выше, проверка введенных данных - это можно и в ф-цию обернуть, или хотя бы: $login=stripslashes(trim(htmlspecialchars($_POST['login'])));

2) а где сессия и куки?

3) разберите какой-нибудь примерчик, хотя бы этот: http://pyha.ru/forum/topic/109

Функции пока видел только мельком, буду изучать.

Сессия и куки в исполняемом скрипте не очень нужны, разве что для защиты от прямого доступа наверное. Поправьте если ошибаюсь.

Спасибо за хороший сайт!

 

А например, пароль "/ /" у тебя пройдёт, хотя состоит из пробелов. Ты уж если вырезаешь, вырезай их все. Кстати, такой логин тоже пройдёт.

Да, думал вчера над этим. Не нашёл функцию вырезать пробелы из середины введённого текста. Разве что с помощью регулярок проверять что введено. Но их я вчера тоже не осилил, хотя вроде ничего сложного.

Link to comment
Share on other sites

  • 0

 

1) ну то что выше, проверка введенных данных - это можно и в ф-цию обернуть, или хотя бы: $login=stripslashes(trim(htmlspecialchars($_POST['login'])));

2) а где сессия и куки?

3) разберите какой-нибудь примерчик, хотя бы этот: http://pyha.ru/forum/topic/109

Функции пока видел только мельком, буду изучать.

Сессия и куки в исполняемом скрипте не очень нужны, разве что для защиты от прямого доступа наверное. Поправьте если ошибаюсь.

Спасибо за хороший сайт!

 

я тут приводил одну ф-цию в качестве примера:

	// Функция экранирования переменных	function quote_smart($value) {    // если magic_quotes_gpc включена - используем stripslashes    	if (get_magic_quotes_gpc()) {			$value = stripslashes($value);    	}    // Если переменная - число, то экранировать её не нужно    // если нет - то окружем её кавычками, и экранируем    	if (!is_numeric($value)) {			$value =mysql_real_escape_string($value);    	}   		return $value;	}

использовать так:

$id =$this->quote_smart($_GET['id']);

поправлю по поводу сессий и кук, они на самом деле нужны, особенно при авторизации, т.к. эти механизмы предназначены для идентифицирования юзера, подробнее почитайте на просторах рунета ;)

Link to comment
Share on other sites

  • 0
поправлю по поводу сессий и кук, они на самом деле нужны, особенно при авторизации, т.к. эти механизмы предназначены для идентифицирования юзера, подробнее почитайте на просторах рунета

За функцию спасибо.

У меня в логине и прочих скриптах сессии прописаны, в регистрации я не виже смысла делать session_start так как никакие данные в $_SESSION не заносятся и не читаются.

Link to comment
Share on other sites

  • 0

да не, вы не поняли, я про авторизацию говорю, по ссылке на пыху там видно из кода, что при авторизации идет сверка:

 

3. Кто авторизован, а кто нет?

Итак мы определились, что авторизованные пользователи — те, у которых указан $_SESSION['user_id']
Те, у кого нет $_SESSION['user_id'], мы будем считать гостями.

и далее:

 

    // то проверяем его куки
    // вдруг там есть логин и пароль к нашему скрипту

    if (isset($_COOKIE['login']) && isset($_COOKIE['password']))
    {

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By cyklop77
      помогите пожалуйста сделать выборку
       
      есть код следующей структуры:
      беспорядочный наборе тегов 1<section class="section form_zakaz_outer" id="form_zakaz_outer_top"></section>беспорядочный наборе тегов 2<section class="section form_zakaz_outer" id="form_zakaz_outer_bottom"></section> беспорядочный наборе тегов 3мне нужно выбрать все siblings между #form_zakaz_outer_top и #form_zakaz_outer_bottom
       
      вот фиддл
       
    • By cyklop77
      помогите пожалуйста советом
       
      в наследство остался контент сайта, который представляет собой беспорядочное нагромождене тегов. задача в том чтобы вставить в этот контент две формы. трудность в том, что формы должны быть прижаты к правому краю и обтекаемы контентом
       
      выглядеть это безобразие должно примерно так

       
      здесь зелёный цвет это контент, красный - формы
       
      фиддл
       
      если важно, то есть возможность обернуть контент в отдельный контейнер. использовать можно любые технологии, кроссбраузерность не критична
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy