|
|
|
|
|
для: tvv123456
(09.04.2010 в 15:59)
| | всем спасибо, проблема решилась просто нужно было сначала выполнить проверку на нажатую кнопку а потом уже остальной скрипт | |
|
|
|
|
|
|
|
для: Рэшад
(09.04.2010 в 15:54)
| | ПО идее htmlspecialchars - нужно выполнять непосредственно перед выводом в браузер, то есть при регистрации и авторизации эту функцию использовать большого смысла нету.
Но если у вас логика построена так что при регистрации данные введенные пользователем преобразуеться при помощи htmlspecialchars, то и при авторизации мы эти данные должны так же преобразовывать, но из-за этого может возникнуть путанница из-за невнимательности, поэтому пользоваться htmlspecialchars - желательно непосредственно при выводе данных в браузер. Также и mysql__escape_string использовать непосредственно перед запросом. Вообщем каждая функция должна быть именно на своем месте, чтобы не вносить путанницы в код
Лично мое мнение:
В БД должно храниться именно то что ввел пользователь, но при выводе из базы в браузер нужно учитывать, что там может храниться что-то нежелательное.
и смотрите зачем 2 раза использовать htmlspecialchars(при регистрации/(записи в базу) и при авторизации) достаточно просто при выводе логина в браузер(например в списке пользователей или когда пользователь оставляет сообщение) | |
|
|
|
|
|
|
|
для: tvv123456
(09.04.2010 в 15:23)
| |
//Перед заносом логина в сессию лучше действительно сделать так:
$login = htmlspecialchars(stripslashes($login)); // вместо $login = stripslashes($login);
// так как мы потом отдаем логин браузеру
|
вроде у меня так реализовано разве что не после проверки на нажатие выполняется | |
|
|
|
|
|
|
|
для: neadekvat
(09.04.2010 в 15:21)
| | Да кстати :)))
Но вариант со стыковкой тоже покатит
Я тут просто некоторые некрасивости подправил и по привычке прописал "df".$we."dsfa"
Вот еще кстати:
$login=$_POST['login'];
$password=$_POST['password'];
//эти строки поместить надо бы после:
if(isset($_POST['plus'])) {
|
и вот еще:
//Перед заносом логина в сессию лучше действительно сделать так:
$login = htmlspecialchars(stripslashes($login)); // вместо $login = stripslashes($login);
// так как мы потом отдаем логин браузеру
|
НУ и других неточностей в моем коде наверняка уйма. | |
|
|
|
|
|
|
|
для: Рэшад
(09.04.2010 в 14:57)
| | И для кого я {} жирным выделил? | |
|
|
|
|
|
|
|
для: tvv123456
(09.04.2010 в 14:41)
| | >Какая-то странная обработка приходящих данных(ниразу не видел.
от инъекции она не спасает.
>Зачем обрезать символы у пароля и логина? Мы вроде должны работать с тем, что дал нам пользователь.
>Количество символов можно ограничить в форме и проверять количество этих символов в обработчике(вдруг кто пошел в обход нашей формы) ну и так далее
количество символов логина - возможно.
Смысла в ограничении количества символов пароля нет никакого.
>Только прежде чем в сессию заносить $login нужно почистить от экранирующих слешей.
Это как раз выполнено. Даже с избытком. | |
|
|
|
|
|
|
|
для: tvv123456
(09.04.2010 в 15:04)
| | спасибо буду разбиратся! | |
|
|
|
|
|
|
|
для: Рэшад
(09.04.2010 в 14:57)
| |
<?php
//$login=substr($_POST['login'],0,30); делайте проверку на соответствие >30 символам
//$login = htmlspecialchars(stripslashes($login)); - убрать
//$password=substr($_POST['password'],0,30); делайте проверку на соответствие >30 символам
//$password = htmlspecialchars(stripslashes($password)); - убрать
$login=$_POST['login'];
$password=$_POST['password'];
if(isset($_POST['plus'])) {
$link=mysql_connect("localhost","pma","password");
mysql_select_db("datab",$link);
if(!get_magic_qoutes_gpc)
{
$login = mysql_real_escape_string($login);
$password = mysql_real_escape_string($password);
}
$result=mysql_query("SELECT login FROM reg WHERE login='$login' AND password='$password'");
if(mysql_num_rows($result) == 1)
{
session_start();
$login = stripslashes($login);
$_SESSION['username']=$login;
echo "вы удачно зашли".$_SESSION['username'].", теперь вы можете перейти на другие страницы<BR>";
echo "<a href=index2.php> Калькулятор</a><br>";
echo "<a href=news.php> Будущая лента новостей</a>";
}
else
{
echo"Пароль или логин не верны";
}
}
|
Чуток получше но косяки все равно есть | |
|
|
|
|
|
|
|
для: Рэшад
(09.04.2010 в 14:57)
| | на конструкцию if посмотрите внимательнее
<?
...
echo "вы удачно зашли {$_SESSION['username']}, теперь вы можете перейти на другие страницы<BR>";
|
| |
|
|
|
|
|
|
|
для: neadekvat
(09.04.2010 в 14:46)
| | хорошо это учтём только не вижу способа решения проблемы!!! | |
|
|
|
|