<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

После прохождения курса Вы без труда сможете создавать любые сайты с использованием фреймворка Yii, причём делать это будете быстро и качественно.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Код регистрации на сайте
01.07.2012 13:12:22 Код регистрации на сайте Сообщение #1
Default

Default

Эксперт

Эксперт

Дата регистрации:
12.06.2012 15:20:27

Сообщений: 102

Всем привет. написал код регистрации, все вроде бы не плохо, регистрирует, но хотелось бы узнать мнение опытных, послушать советы

<?php session_start();
// выставляем кодировку по умолчанию
mb_internal_encoding("UTF-8";
// включение всех ошибок
error_reporting(E_ALL);

// функция кр звезды
function zv($color = "red", $text = "*"{
echo "<font color = ".$color.">".$text."</font>";
}
// минимальная и максимальная длина вводимых данных
function maxSize($text, $text){
return (mb_strlen($text) >= 3 && mb_strlen($text) <= 15 );
}
// обработка данных
function clearText($test){
return mysql_real_escape_string(htmlspecialchars(trim($test)));
}
// создаем переменные для устранения ошибки NOTICE
$login = '';
$error = '';
$pass = '';
$clear_pass = '';
///////////////////////////////////////
// принимаем данные пришедшие из формы
////////////////////////////////////////
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset ($_POST['ok'])){
if(isset($_POST['login']) && maxSize($_POST['login'],$_POST['login']))
$login = clearText($_POST['login']);
else $error .= "Неверно указан логин.<br />";

if(isset($_POST['pass']) && maxSize($_POST['pass'],$_POST['pass'])){
$pass = clearText($_POST['pass']);
if(isset($_POST['clear_pass']) && maxSize($_POST['clear_pass'],$_POST['clear_pass']))
$clear_pass = clearText($_POST['clear_pass']);
if ($pass != $clear_pass)
$error .= "Пароли не совпадают.<br />";
}else{ $error .= "Неверно указан пароль.<br />";}

if (empty ($_POST['pravila'])) $error .= "Необходимо согласиться с правилами.<br />";
}
///////////////////////////////////////////////
// если буфер ошибок пуст то подключаемся к ДБ
///////////////////////////////////////////////
if (empty($error)){
include "config.php";
// делаем запрос к таблице и проверяем на существование такого ника в БД
$query = mysql_query ("SELECT COUNT(*) FROM users WHERE login = '$login'";
if (!$query) exit("Ведутся технические работы, поэтому корректное отображение страницы невозможно.";
$result = mysql_result ($query, 0);
if ($result > 0 ) $error .= "Логин \"".$login."\" занят.<br />";
}
////////////////////////////////////////////////
// если буфер ошибок пуст, то вносим данные в БД
////////////////////////////////////////////////
if (empty($error)){
$query = mysql_query ("INSERT INTO users(login,
pass,
reg_date)
VALUES('$login',
'$pass',
NOW())";
if (!$query) $error .= exit("Ведутся технические работы, поэтому корректное отображение страницы невозможно!";
}
////////////////////////////////////////////////////////////////////////////
// если буфер ошибок пуст, то делаем выборку id из ДБ записываем в сессию
////////////////////////////////////////////////////////////////////////////
if(empty($error)){
$query = mysql_query("SELECT id FROM users WHERE login = '$login'";
if (!$query) exit("Ведутся технические работы, поэтому корректное отображение страницы невозможно.";
$result_id = mysql_fetch_assoc($query);
if (!$result_id) exit("Ведутся технические работы, поэтому корректное отображение страницы невозможно.";
$id = $result_id['id'];
$_SESSION['$login'] = $login;
$_SESSION['pass'] = $pass;
$_SESSION['id'] = $id;
if (isset($_SESSION['$login']) && isset($_SESSION['pass']) && $_SESSION['id']){
// направляем на другую страницу
header ("Location:index.php";
}
}
echo "$error";


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Регистрация</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
<?php
echo "<p>$error</p>";
?>
<form action = "reg.php" method = "POST">
<?php echo zv();?>Логин:<br />
<input type = "text" name = "login" maxlength="15" value="<?php echo $login;?>" /><br />
<?php echo zv();?>Пароль:<br />
<input type = "password" name = "pass" maxlength="15" value="<?php echo $pass;?>" /><br />
<?php echo zv();?>Повторите пароль:<br />
<input type = "password" name = "clear_pass" maxlength="15" value="<?php echo $clear_pass;?>" /><br />
<input name="pravila" type="checkbox" /> Я согласен с <a href = '#'>правилами</a>.<br />
<input type = "submit" name = "ok" value = "Регистрация" />
</form>
</body>
</html>
Профиль Ответить
01.07.2012 16:26:21 Код регистрации на сайте Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Если работает, то хорошо, хотя лучше использовать ООП, да и не смешивать HTML и PHP в одном файле. Это оправдано, если вся цель - это создать регистрацию + чуть-чуть материала на сайте. А если же это полноценный большой сайт, то лучше писать движок.
Профиль Ответить
01.07.2012 16:51:59 Код регистрации на сайте Сообщение #3
Default

Default

Эксперт

Эксперт

Дата регистрации:
12.06.2012 15:20:27

Сообщений: 102

ОПП? я только изучаю, и понятия не имею что такое "движок" и как он работает) я думал если работает код, то хорошо) сейчас я планирую писать что-то типа чата с личной страницей пользователя, сообщениями, добавления фото, аудио, видео альбома, рейтинг и прочее (вообщем ничего серьезного), что поможет более или менее освоить язык и взаимодействовать с mysql, а там уже по мере освоения можно будет переправлять код.
Что значит не смешивать HTML и PHP? например форму делать в одном файле, а обработчик в другом?
Профиль Ответить
01.07.2012 16:58:16 Код регистрации на сайте Сообщение #4
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Да, в разных файлах, но здесь и не получится, поскольку всё равно надо где-то и как-то выводить ошибки. Поэтому всё-таки нужен движок.
Профиль Ответить
01.07.2012 19:21:37 Код регистрации на сайте Сообщение #5
Default

Default

Эксперт

Эксперт

Дата регистрации:
12.06.2012 15:20:27

Сообщений: 102

А у вас есть статьи об этом? хотя бы иметь понятия, что это такое.
Профиль Ответить
01.07.2012 19:25:01 Код регистрации на сайте Сообщение #6
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

http://myrusakov.ru/php-create-engine.html
Профиль Ответить
07.07.2012 20:26:21 Код регистрации на сайте Сообщение #7
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Я не опытный, я только учусь, номне кажется что вот эти строчки:
$query = mysql_query("SELECT id FROM users WHERE login = '$login'";
$result_id = mysql_fetch_assoc($query);

можно заменить всего одной:
$result_id = mysql_insert_id($query);
сразу после запроса
$query = mysql_query ("INSERT INTO users(login, pass, reg_date) VALUES('$login', '$pass', NOW())";
Профиль Ответить
11.07.2012 18:16:17 Код регистрации на сайте Сообщение #8
Default

Default

Эксперт

Эксперт

Дата регистрации:
12.06.2012 15:20:27

Сообщений: 102

А если вы одновременно с кем-то регистрируетесь и он на какую-то тысячную секунду быстрее вас отправил данные, чтобы вставить? тогда получиться что вы вытащите его id
Профиль Ответить
11.07.2012 18:18:12 Код регистрации на сайте Сообщение #9
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Если Вы про сообщение выше, то нет. Он как раз делает всё правильно, поскольку там хранится идентификатор текущего соединения. И выводится последний id после INSERT текущего соединения. То есть если кто-то другой в этот момент добавится, то всё равно всё будет верно. А вот те, кто вытаскивает максимальный id рискуют на это нарваться.
Профиль Ответить
11.07.2012 18:20:59 Код регистрации на сайте Сообщение #10
Default

Default

Эксперт

Эксперт

Дата регистрации:
12.06.2012 15:20:27

Сообщений: 102

Вот я и читал за это, то что не безопасно иногда использовать эту функцию... теперь буду знать, а ac-40-6.0, спасибо
Профиль Ответить