PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
Bio man
Отправлено: 28 Июля, 2011 - 22:27:11
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010
Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
что лучше?
1 вариант: PHP:
скопировать код в буфер обмена
<?PHP
require_once "common.php" ;
require_once "modules/getpost.php" ;
class register extends getpost {
private $error = false ;
private $errortext = array ( ) ; private $show_reg = true ;
function __construct( $lang ) {
$html = new template( false ) ;
if ( $_POST ) {
parent:: __construct( ) ;
$this -> validate ( $html , $lang ) ;
}
if ( $this -> show_reg ) {
$html -> set_filenames ( array ( 'register' => 'register.html' ) ) ; $html -> set_vars ( array ( 'TITLE' => $lang [ 'register' ] [ 'title' ] , 'USERNAME' => $lang [ 'register' ] [ 'username' ] ,
'PASSWORD' => $lang [ 'register' ] [ 'password' ] ,
'R_PASSWORD' => $lang [ 'register' ] [ 'r_password' ] ,
'SEX' => $lang [ 'sex' ] [ 'sex' ] ,
'MAN' => $lang [ 'sex' ] [ 'M' ] ,
'WOMAN' => $lang [ 'sex' ] [ 'W' ] ,
'EMAIL' => $lang [ 'general' ] [ 'email' ] ,
'REGISTER' => $lang [ 'register' ] [ 'register' ]
) ) ;
$html -> parse ( 'register' ) ;
}
}
private function insert_in_db( $html , $lang ) {
$db = new database( ) ;
$sql = "INSERT INTO `users` (`username`, `password`, `sex`, `e-mail`, `reg_time`, `last_visit`) VALUES ('{$this->post['username']} ', '{$this->post['password1']} ', '{$this->post['sex']} ', '{$this->post['email']} ', NOW(), NOW())" ;
$db -> db ( 'query' , $sql ) ;
if ( $db -> result ) {
$this -> show_reg = false ;
$_SESSION [ 'logged_in' ] = true ;
$sql = "SELECT `id` FROM `users` WHERE `username` = '{$this->post['username']} ' AND `password` = '{$this->post['password1']} '" ;
$db -> db ( 'array' , $sql ) ;
$_SESSION [ 'id' ] = $db -> array [ 'id' ] ;
$html = new template( $user = new user( $lang ) ) ;
$html -> set_filenames ( array ( 'welcome' => 'welcome.html' ) ) ; $html -> set_vars ( array ( 'TITLE' => $lang [ 'login' ] [ 'welcome' ] . ', ' . $user -> user_data [ 'username' ] , 'ENTER' => $lang [ 'login' ] [ 'enter' ]
) ) ;
$html -> parse ( 'welcome' ) ;
}
else {
}
}
private function validate( $html , $lang ) {
if ( empty ( $this -> post [ 'username' ] ) ) { $this -> error = true ;
$this -> errortext [ ] = $lang [ 'errors' ] [ 'empty_un' ] ;
}
else {
if ( strlen ( $this -> post [ 'username' ] ) < 4
|| strlen ( $this -> post [ 'username' ] ) > 20
) { $this -> error = true ;
$this -> errortext [ ] = $lang [ 'errors' ] [ 'un_len' ] ;
}
else {
$db = new database( ) ;
$db -> db ( 'num_rows' , "SELECT `id` FROM `users` WHERE `username` = '{$this->post['username']} '" ) ;
if ( $db -> num_rows ) {
$this -> error = true ;
$this -> errortext [ ] = $lang [ 'errors' ] [ 'un_exists' ] ;
}
}
}
if ( empty ( $this -> post [ 'password1' ] ) ) { $this -> error = true ;
$this -> errortext [ ] = $lang [ 'errors' ] [ 'empty_pass' ] ;
}
else {
if ( strlen ( $this -> post [ 'password1' ] ) < 6
) { $this -> error = true ;
$this -> errortext [ ] = $lang [ 'errors' ] [ 'pass_len' ] ;
}
else {
if ( $this -> post [ 'password1' ] != $this -> post [ 'password2' ] ) {
$this -> error = true ;
$this -> errortext [ ] = $lang [ 'errors' ] [ 'pass_n_m' ] ;
}
}
}
if ( $this -> error ) {
$errortext = '<font color="#FF0000"><ul><li>' . implode ( '</li><li>' , $this -> errortext ) . '</li></ul></font>' ; $html -> set_var ( 'ERROR' , $errortext ) ;
}
else $this -> insert_in_db ( $html , $lang ) ;
}
}
new register( $lang ) ;
?>
или:
PHP:
скопировать код в буфер обмена
<?PHP
require_once "common.php" ;
require_once "modules/getpost.php" ;
$error = false ;
$show_reg = true ;
$html = new template( false ) ;
if ( $_POST ) {
$data = new getpost( ) ;
if ( empty ( $data -> post [ 'username' ] ) ) { $error = true ;
$errortext [ ] = $lang [ 'errors' ] [ 'empty_un' ] ;
}
else {
if ( strlen ( $data -> post [ 'username' ] ) < 4
|| strlen ( $data -> post [ 'username' ] ) > 20
) { $error = true ;
$errortext [ ] = $lang [ 'errors' ] [ 'un_len' ] ;
}
else {
$db = new database( ) ;
$db -> db ( 'num_rows' , "SELECT `id` FROM `users` WHERE `username` = '{$data->post['username']} '" ) ;
if ( $db -> num_rows ) {
$error = true ;
$errortext [ ] = $lang [ 'errors' ] [ 'un_exists' ] ;
}
}
}
if ( empty ( $data -> post [ 'password1' ] ) ) { $error = true ;
$errortext [ ] = $lang [ 'errors' ] [ 'empty_pass' ] ;
}
else {
if ( strlen ( $data -> post [ 'password1' ] ) < 6
) { $error = true ;
$errortext [ ] = $lang [ 'errors' ] [ 'pass_len' ] ;
}
else {
if ( $data -> post [ 'password1' ] != $data -> post [ 'password2' ] ) {
$error = true ;
$errortext [ ] = $lang [ 'errors' ] [ 'pass_n_m' ] ;
}
}
}
if ( $error ) {
$errortext = '<font color="#FF0000"><ul><li>' . implode ( '</li><li>' , $errortext ) . '</li></ul></font>' ; $html -> set_var ( 'ERROR' , $errortext ) ;
}
else {
/////
$db = new database( ) ;
$sql = "INSERT INTO `users` (`username`, `password`, `sex`, `e-mail`, `reg_time`, `last_visit`) VALUES ('{$data->post['username']} ', '{$data->post['password1']} ', '{$data->post['sex']} ', '{$data->post['email']} ', NOW(), NOW())" ;
$db -> db ( 'query' , $sql ) ;
if ( $db -> result ) {
$show_reg = false ;
$_SESSION [ 'logged_in' ] = true ;
$sql = "SELECT `id` FROM `users` WHERE `username` = '{$data->post['username']} ' AND `password` = '{$data->post['password1']} '" ;
$db -> db ( 'array' , $sql ) ;
$_SESSION [ 'id' ] = $db -> array [ 'id' ] ;
$html = new template( $user = new user( $lang ) ) ;
$html -> set_filenames ( array ( 'welcome' => 'welcome.html' ) ) ; $html -> set_vars ( array ( 'TITLE' => $lang [ 'login' ] [ 'welcome' ] . ', ' . $user -> user_data [ 'username' ] , 'ENTER' => $lang [ 'login' ] [ 'enter' ]
) ) ;
$html -> parse ( 'welcome' ) ;
}
else {
}
/////
}
}
if ( $show_reg ) {
$html -> set_filenames ( array ( 'register' => 'register.html' ) ) ; $html -> set_vars ( array ( 'TITLE' => $lang [ 'register' ] [ 'title' ] , 'USERNAME' => $lang [ 'register' ] [ 'username' ] ,
'PASSWORD' => $lang [ 'register' ] [ 'password' ] ,
'R_PASSWORD' => $lang [ 'register' ] [ 'r_password' ] ,
'SEX' => $lang [ 'sex' ] [ 'sex' ] ,
'MAN' => $lang [ 'sex' ] [ 'M' ] ,
'WOMAN' => $lang [ 'sex' ] [ 'W' ] ,
'EMAIL' => $lang [ 'general' ] [ 'email' ] ,
'REGISTER' => $lang [ 'register' ] [ 'register' ]
) ) ;
$html -> parse ( 'register' ) ;
}
?>
если не сложно, проверьте какие недостатки и ошибки
OrmaJever
Отправлено: 29 Июля, 2011 - 01:32:37
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010
Откуда: Чернигов
Помог: 299 раз(а)
2 подход думая лутше будет, но его ещё нужно оптимизировать. Например
Зачем это условие? пост суперглобальный масив и существует всегда, условие всегда будет истино.
Затем вот такие вещи
лутше писать так
лутше для поимания и меньш строк.
Обьвлять переменую $error со значением false вначале, а потом при появлении ошибок просто давать значение true глупо, ибо есть масив с ошибками.
Вначале скрипта обьявляем
$errortext = false;
Если появляются ошибки пишем их в масив как и раньше, затем проверяем
PHP:
скопировать код в буфер обмена
if ( $errortext === false ) // ошибок нет, если они будут то $errortext будет масивом.
или
if ( $errortext !== false ) echo 'ошибки! ' , implode ( '<br>' , $errortext ) ;
ну и думаю некоторые условия можно сократить
-----Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Bio man
Отправлено: 29 Июля, 2011 - 16:29:22
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010
Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
спасибо за советы. нащет массива пост, не знаю другого приема как определить были ли данные переданы скрипту на обработку или нет, мне кажется
самое простое решение. хочу уточнить, во всех случаях эти переменные будут false?(Отредактировано автором: 29 Июля, 2011 - 16:31:14)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB