Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регистрация, Проверка, помещение в бд, функции 
:(
    Опции темы
KLUBS
Дата 15.7.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 11.2.2007
Где: Спб

Репутация: нет
Всего: 1



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

            $_POST = StripSlashesGPC($_POST);
            $error = 0;
    
    if(isset($_POST['login']) && isset($_POST['pass1']))
    {
        $mess = "";
        if(empty($_POST['login']) || !IsValidText($_POST['login']))
        {
            $mess .= "Неверный логин<br>";
            $error = 1;
        }
        
        if(empty($_POST['pass1']) || !IsValidText($_POST['pass1']))
        {
            $mess .= "Неверный пароль<br>";
            $error = 2;
        }
        
        if($_POST['pass1'] != $_POST['pass2'])
        {
            $mess .= "Пароли не совпадают<br>";
            $error = 4;
        }
        
        if(IsRegister($_POST['login']) && IsValidText($_POST['login']))
        {
            $mess .= "Такой пользователь уже существует<br>";
            $_POST['login']="";
            $error = 3;
        }
            
    
        if($error == 0)
            Register($_POST['login'],$_POST['pass1'],$m);
        else
        {
            $Smarty->assign("reg_error",$mess);
            $Smarty->assign("login",$_POST['login']);
        }
        
    }
    $Smarty->assign("main_content_template","register.tpl.html");


Доп. функции:
Код

function StripSlashesGPC($Data){

    if(!get_magic_quotes_gpc())return $Data;
    if(is_array($Data)){
        
        foreach ($Data as $Index => $Value){
            
            $Data[$Index] = StripSlashesGPC($Value);
        }
        return $Data;
    }
    return stripslashes($Data);
}


Код

function Register($login, $password) {
        $login = EscapeSQLstring($login);
        $password = EscapeSQLstring($password);
        
        DbQuery("INSERT INTO users (login, password) VALUES( '$login', '$password' )");
        
        //global $_SESSION;
        
        $_SESSION['log'] = $login;
        $_SESSION['pass'] = $password;
        Header("Location: index.php?register=yes&reg_successful=yes");
        //return true;
    }



Код

function EscapeSQLstring ( $Data, $Params = array(), $Key = array() ){
    
    if (!is_array($Data)){
        
        return mysql_escape_string ($Data);
    }
    
    if (!is_array($Key))$Key = array($Key);
    foreach ($Data as $Key2=>$Data2){
        
        if (count($Key)&&!is_array($Data2)){
            
            if (in_array($Key2, $Key)){
                
                $Data[$Key2] = EscapeSQLstring( $Data2, $Params, $Key);
            }
        }else $Data[$Key2] = EscapeSQLstring( $Data2, $Params, $Key);
        
    }
    return $Data;    
}


Код

function IsValidText( $str )
{
    return preg_match('|^[a-zA-Z0-9]+$|',$str);
}


Интересует:
  • 1. Когда нужно проверять данные (можно 1 раз в функции IsValidText (для кажого вида создать такую) и при регистрации проверять строго регулярками, если это текстовое поле (инфо) не угадаешь, что пользователь захочет туда запихать, так что придется как то избавляться от мусора для SQL (! что сдеть подойдет идеально) , т.е. проверять данные ПЕРЕД загрузкой в БД, чтобы потом не мучаться.







PM MAIL ICQ Skype   Вверх
MoLeX
Дата 15.7.2008, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140




 ! 
MoLeX
Модератор: Даннай тема не каким местом не относиться к Проф. разделу.



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Feldmarschall
Дата 15.7.2008, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



В принципе, нормально, только много лишнего.
Непонятно, зачем такое количество функций.
Непонятно, зачем лежащий в функции IsRegister[ed] код оформлять в функцию
Непонятно, зачем лежащий в функции Register код оформлять в функцию

Не очень понятно, почему функция EscapeSQLstring  работает с массивами.
Цитата(KLUBS @  15.7.2008,  12:08 Найти цитируемый пост)
1. Когда нужно проверять данные (можно 1 раз в функции IsValidText (для кажого вида создать такую) и при регистрации проверять строго регулярками, если это текстовое поле (инфо) не угадаешь, что пользователь захочет туда запихать, так что придется как то избавляться от мусора для SQL (! что сдеть подойдет идеально) , т.е. проверять данные ПЕРЕД загрузкой в БД, чтобы потом не мучаться.

еще раз, пожалуйста, но более связно. при чем здесь мусор SQL, какие такие проверки имеются в виду, и в чем вообще вопрос заключается.
сейчас логин проверяется регуляркой при регистрации. Чем это-то не устраивает?
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.