Вот при логине на сайт, я зделал для себя функцыю для фильтрации всяких ненужных символов, вот код
Код |
function check($str) { if (preg_match("/[a-zA-Z0-9\-\_\s]{3,15}$/", $str)) //(preg_match("/[^\~\#\@\$\%\^\&\*\(\)\=\/\[\]\{\}\<\>\;\'\:]+$/", $str)) {return $str;} else { echo "<br><br>Неверный логин/пароль!!!!!!!!!!!!!!!"; } } |
Цитата (twin @ 12.08.2009 - 11:40) |
Даже, если чесно, не хочется вникать. Сама постановка вопроса, что в логине нельзя использовать какие то символы, уже вызывает грустные эмоции... Учитесь правильно работать с данными, ничего тогда запрещать не надо будет. И фильтровать тем более. |
Цитата |
zzzv1r, twin спокойнее |
Цитата (twin @ 12.08.2009 - 13:11) |
Загоняй сюда все что хочешь. все равно будет тебе персональная страница. |
Цитата (twin @ 12.08.2009 - 13:17) |
А там нет других символов. Просто название страницы и логин - разные вещи. Для названия как раз фильтруется. И транслитируется. |
Код |
function check($str) { if (preg_match("/^[a-zA-Z0-9\-\_\s]{3,15}$/", $str)) {return $str;} else { echo "<br>Даные не совпадают!"; ?> |
Цитата (twin @ 12.08.2009 - 13:39) |
в браузере будет twin. Если он уже есть, то знач на tw'in будет отказ, что такой занят. И наоборот. А логин будет таким, какой введешь. Кто первый встал, того и тапки. .... Так что я устраняюсь |
Цитата (twin @ 12.08.2009 - 21:05) |
Вот когда кто то захочет после него логин <?php?>, то при регистрации система выдаст - мол логин занят. Имхо это гораздо гуманнее, чем писать - введены недопустимые символы!!! |
Цитата |
twin я понял про что ты тут надривался расказать, я просто имел ввиду при регистрации, фильтровать логин. |
Цитата |
Советую взять на вооружение данный метод и отстраняться от оценки системы с точки зрения разработчика (вы знаете как изменить ник, чтобы прошло. а пользователь не знает, но просто видит абсурдные ошибки о неуникальности). |
Цитата |
Как бэ речь шла не о логине, а о некоем уникальном идентификаторе, используемом в ссылках. |
Цитата (twin @ 12.08.2009 - 21:33) |
Надо правильно хранить и отображать информацию. Научиться это делать раз и на всегда, можно решив задачу, которую ты, как я понял, не удосужился даже прочитать. Вот в этом я готов тебе помочь. |
Цитата (twin @ 13.08.2009 - 08:08) |
Ну начало хорошее. Именно так. А вот на выводе уже обработать htmlspecialchars(). Это основной принцип. А тонкости и детали у каждого свои. |
Цитата (twin @ 13.08.2009 - 08:31) |
(Что касаемо строковых констант) |
Цитата |
и покарявит тот код что он ввел |
Цитата |
А вот я не понимаю когда будет возможность с цыфрами? потому что любое поле на сайте это строка, разве что когда передают число в строке браузера типа того? www.mysite.php?number=12 |
Цитата (twin @ 13.08.2009 - 08:57) |
Ниего она не корявит. А просто экранирует символы. Вот чем так гадать, лучше посмотреть в мануале, какая функция что делает. А ещё лучше на практике. Я не зря задачку сочинял. В базу будет занесено то, то он напишет. И никакой инъекции не будет. |
Код |
<?php $item = "Zak's and Derick's Laptop"; $escaped_item = mysql_real_escape_string($item); printf ("Escaped string: %s\n", $escaped_item); ?> |
Код |
Escaped string: Zak\'s and Derick\'s Laptop |
Цитата (zzzv1r @ 13.08.2009 - 09:15) |
То значить принимать функцыей intval()? или еще по модулю брать тоже? |
Цитата (Nikitian @ 13.08.2009 - 10:15) |
Принимать функцией интвал и брать по модулю, если используется в лимите. |
Цитата |
Там должны быть только положительные числа (иначе получится чепуха на выходе) |
Код |
$username=mysql_real_escape_string($_POST['username']); $query = mysql_query("SELECT username,password FROM tb_users WHERE username = '$username'") or die(mysql_error()); ........ //а потом setcookie("usNick",$username,time()+7776000); |
Код |
$username=mysql_real_escape_string($_POST['username']); $query = mysql_query("SELECT username,password FROM tb_users WHERE username = '$username'") or die(mysql_error()); ........ а потом setcookie("usNick",$_POST['username'],time()+7776000); |
Цитата (twin @ 13.08.2009 - 17:19) |
PS Да, не забудь, что когда из куки вытащишь, надо экранировать перед запросом. |
PHP |
function check($str) |
Цитата |
я так делал |
Код |
<? function check($str) { if (!preg_match("/^[a-zA-Z0-9\-\_\s]{3,15}$/", $str)) { $a="<br><br>Неверный логин/пароль !".$str."!"; return $a; } else $a="<br><br>good !".$str."!"; return $a; } $res=check($_POST['str']); echo "$res"; ?> <form action="1.php" method="POST"> <input type="text" size="15" maxlength="15" name="str" autocomplete="off"> <input type="submit" value="добавить" class="button"></form> |
Цитата (twin @ 13.08.2009 - 18:22) |
Ну ты опять за своё? Зачем проверка то? Чего опять ты проверяешь? Не в коня видно корм... |
Цитата |
ввожу zzzv1r<> : выдает "Неверный логин/пароль !zzzv1r<>!" ввожу zzzv1r<asasas>: выдает "Неверный логин/пароль !zzzv1r!" |
Код |
<form action="login.php" method="post" name="login" > <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td> <label for="mod_login_username">Логин</label> <br /> <input name="username" type="text" class="inputbox" autocomplete="off" alt="username" size="15" maxlength="15" value="" tabindex="1" /> <br /> <label for="mod_login_password">Пароль</label> <br /> <input type="password" name="password" class="inputbox" autocomplete="off" size="15" maxlength="15" alt="password" value="" tabindex="2" /> <br /><br /> <input type="submit" name="Submit" class="button" value="Войти" /> </td> |
Код |
<? require_once('.zsecurity.php'); session_start(); require('config.php'); $username=mysql_real_escape_string($_POST['username']); $password=md5($_POST['password']); $query = mysql_query("SELECT username,password FROM tb_users WHERE username = '$username'") or die(mysql_error()); $data = mysql_fetch_array($query); if ($data['password'] != $password || $data['username'] != $username) { include('header.php'); echo "<br><br>Неверный логин/пароль"; include('footer.php'); }else{ $query = mysql_query("SELECT user_status FROM tb_users WHERE username = '$username'") or die(mysql_error()); $row = mysql_fetch_array($query); $administrator = $row['user_status']; setcookie("usNick",$username,time()+7776000); setcookie("usPass",$password,time()+7776000); if ($administrator=="fishmaster") {setcookie("usStat","main",time()+7776000);} require('funciones.php'); $lastlogdate=date("Y-m-d h:i:s"); $lastip = getRealIP(); $querybt = "UPDATE tb_users SET lastlogdate='$lastlogdate', lastiplog='$lastip' WHERE username='$username'"; mysql_query($querybt) or die(mysql_error()); mysql_close($con); ?> <META HTTP-EQUIV="REFRESH" CONTENT="0;URL=work.php"> <? } ?> |
Цитата |
блин даже когда делаю так setcookie("usNick",$_POST['username'],time()+7776000); всеравно браузер ставит себе в куки логин как %7E%23%40%23%25%29%29%29 а должно быть ~#@#%))) |
Цитата (twin @ 13.08.2009 - 19:47) |
А что ты переживаешь то? Это просто url кодирование. Всегда так бывает, когда символы в куках или адресной строке. |
Код |
$login = isset($_POST['login'])?$_POST['login']:null; $email = isset($_POST['email'])?$_POST['email']:null; $password = isset($_POST['password'])?$_POST['password']:null; |
Код |
function check($str) { if (!preg_match("/^[a-zA-Z0-9\-\_\s]{3,15}$/", $str)) { $a="<br><br>Неверный логин/пароль !".htmlspecialchars($str)."!"; return $a; } else $a="<br><br>good !".htmlspecialchars($str)."!"; return $a; } |