|
|
|
| Как можно сократить этот код проверки полей на символы и еще этот код не удобен тем, что если пользователь при регистрации в каком-то поле допустил ошибку, то ему не напишет где именно
<?php
if(
!preg_match("/^[a-zA-Z0-9_-]+$/i", $login ) or
!preg_match("/^[a-zA-Z0-9_-]+$/i", $password) or
!preg_match("/^[a-zA-Z0-9_-]+$/i", $password2) or
!preg_match("/^[a-zA-Z0-9_\.\_-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/", $mail) or
!preg_match("/^[a-zA-Z0-9_\.\_-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/", $mail2)
) { echo "<p class='white' align='center'>Разрешены только след. символы: a-z, A-Z, 0-9, -, _, либо вы допустили лишние пробелы" ; }
else {
идем дальше
}
|
И вот данный код еще, как его можно сократить?
<?php if (strlen($login) <6 or strlen($login) >10) {echo "<p align='center' class='white'>Логин должен быть не меньше 6 и не больше 10 символов</p>";} else {
if (strlen($password) <6 or strlen($password) >10) {echo "<p align='center' class='white'>Пароль должен быть не меньше 6 и не больше 10 символов</p>";}
else {
|
| |
|
|
|
|
|
|
|
для: Ванек2010
(23.07.2010 в 18:46)
| | По второму:
if (strlen($password) and (strlen($login)) <6 or strlen($password) and (strlen($password)) >10) {
echo "<p align='center' class='white'>Пароль должен быть не меньше 6 и не больше 10 символов</p>";}
|
Наверное так... | |
|
|
|
|
|
|
|
для: OLi
(23.07.2010 в 20:48)
| | Нет)) | |
|
|
|
|
|
|
|
для: Ванек2010
(23.07.2010 в 18:46)
| | 1. Зачем вы ограничиваете перечень допустимых символов в пароле? Какая вам разница, какой пароль у пользователя?
2. Что вам мешает разделить проверку на несколько:
$error = '';
if(!preg_match("/^[a-zA-Z0-9_-]+$/i", $login ))
$error .= '<li>Ошибка в логине';
if(!preg_match("/^[a-zA-Z0-9_\.\_-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/", $mail))
$error .= '<li>Ошибка в e-mail'e';
И потом вывести эти ошибки?
3. Опять таки, какое вам дело до длины пароля пользователя?
4. Зачем сокращать код, объясните | |
|
|
|
|
|
|
|
для: neadekvat
(24.07.2010 в 00:33)
| | Ошибки лучше заносить в массив, например, $errors['error_login'], и.т.д | |
|
|
|
|
|
|
|
для: ols
(24.07.2010 в 00:44)
| | Зачем именовоные индексы? Так ведь больше мороки себе добавляется
Не проще ли так:
//проверка 1
$errors[] = 'Плохой логин';
//проверка 2
$errors[] = 'Плохое мыло';
if (!empty($errors))
// вывод ошибок | |
|
|
|
|
|
|
|
для: neadekvat
(24.07.2010 в 00:48)
| | >Зачем именовоные индексы? Так ведь больше мороки себе добавляется
О какой мороке идет речь? Например, это удобно, если вывод ошибки конкретного поля происходит рядом с полем, а не обходом массива $errors. Да и потом если каждую ошибку определить в переменную, можно при помощи extract(). | |
|
|
|
|
|
|
|
для: ols
(24.07.2010 в 16:44)
| | О мороке, если выводить ошибки блоком, например, над формой.
У вас описаны другие ситуации, конечно. | |
|
|
|
|
|
|
|
для: neadekvat
(24.07.2010 в 00:33)
| | На счет пароля согласен...
И еще можно переде проверкой на корректность все переменные ($password, $password2, $login....) через trim пропустить... и убрать строку "либо вы допустили лишние пробелы" гг | |
|
|
|
|
|
|
|
для: neadekvat
(24.07.2010 в 00:33)
| | Просто это все хранится в MSSQL базе, и большая длина пароля в игре не допускается.
И если не делать проверку на символы в пароле, то так и снести базу можно, что уже в прочем и сделали один раз, поэтому в этот раз надо защитить все.
<?php
if(!preg_match("/^[a-zA-Z0-9_\.\_-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/", $mail))
$error .= '<li>Ошибка в e-mail'e';
|
Да вот, то что надо, спасибо | |
|
|
|
|
|
|
|
для: Ванек2010
(24.07.2010 в 09:55)
| |
<?php
if(!preg_match("/^[a-zA-Z0-9_\.\_-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/", $mail))
$error .= '<li>Ошибка в e-mail'e';
|
Надо экранировать '
<?php
if(!preg_match("/^[a-zA-Z0-9_\.\_-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/", $mail))
$error .= '<li>Ошибка в e-mail\'e';
|
| |
|
|
|
|
|
|
|
для: Ванек2010
(24.07.2010 в 09:55)
| | Вы что, пароли в открытом виде храните? Еще одни.. | |
|
|
|
|
|
|
|
для: Ванек2010
(24.07.2010 в 09:55)
| | >И если не делать проверку на символы в пароле, то так и снести базу можно, что уже в
>прочем и сделали один раз, поэтому в этот раз надо защитить все.
Есть такая штука MD5. С помощью этого вы всегда сможете получать пароль( точнее не сам пароль а его хеш) длиной 32 символа и не придеться ограничивать количество и набор символов | |
|
|
|
|
|
|
|
для: Ванек2010
(24.07.2010 в 09:55)
| | >Просто это все хранится в MSSQL базе, и большая длина пароля в игре не допускается.
пароли не хранят.
Ни в базе ни еще где либо. | |
|
|
|
|
|
|
|
для: Trianon
(24.07.2010 в 17:04)
| | Тоесть не хранят? В md5 вы имеете ввиду? Каким образом вы зайдете в игру если пароль в таблице будет в md5 , это только делать sql процедуру, в чем я пока не разбираюсь | |
|
|
|
|
|
|
|
для: Ванек2010
(24.07.2010 в 19:40)
| | Так. Хранят хеш.
Никакие процедуры для этого необязательны, хотя и их можно применить, если есть потребность.
md5 - не единственный хеш, между прочим.
Но я не про все про это.
Я про то, что пароли, которые Вы проверяете - не Ваши.
Какое, собственно, право Вы имеете определять, какими им быть, а какими - нет? | |
|
|
|
|
|
|
|
для: Ванек2010
(24.07.2010 в 19:40)
| | Зачем процедуры? Когда пользователь логинится - хэшуруйте введенный пароль и сверяйте с хэшем, что лежит в базе. | |
|
|
|
|
|
|
|
для: neadekvat
(24.07.2010 в 21:49)
| | Блин еще один)) Игра не браузерная, а по типу Line Age2, вы понимаете, что при входе в игру пользователь вводит пароль и программа берет пароль из базы без MD5, если она будет брать с MD5 то она просто его не впустит, а чтобы брала с MD5, надо изменять процедуру впуска, в общем спасибо за помощь, меня интересовало только выдавание определенной ошибки в поле, то что дал неадекват) | |
|
|
|
|
|
|
|
для: Ванек2010
(25.07.2010 в 10:33)
| | Так изменяйте же эту самую процедуру, если без этого никак!
Какая нахрен разница, почему именно Вы делаете через жопу то что делаете?
Делайте нормально - доставать не будут. | |
|
|
|
|
|
|
|
для: Trianon
(25.07.2010 в 11:17)
| | Пока пхп учу, до процедур мне далеко, всему свое время, а пока и так норм
У меня другой вопрос возник, когда пароли летают по $_POST' у их переловить могут? Если да, тогда при полете надо в md5 их, а перед заносом в базу обратно в стандартный вид да? | |
|
|
|
|
|
|
|
для: Ванек2010
(25.07.2010 в 11:55)
| | Конечно могут "переловить", так как пароли "летают" исключительно эшелонами 128-1500 метров, не более. При полете в режиме форсажа (md5), их ловля становится бессмысленной. ) | |
|
|
|
|
|
|
|
для: sim5
(25.07.2010 в 18:33)
| | спс) | |
|
|
|
|
|
|
|
|
для: oliss
(25.07.2010 в 21:22)
| | Давайте будем честны - это не расшифровка, а просто поиск по базе хэшей. | |
|
|
|
|
|
|
|
для: neadekvat
(25.07.2010 в 21:31)
| | Совершенно верно :)) | |
|
|
|