я php только учу, вот написал нечто похожее на скрипт
в нем присутствуют:
регистрация,
вход по своим логином,
чат (добавление/удаление записей),
гостевая книга (добавление/удаление/редактирование записей),
новости (добавление/удаление записей),
ЛС (личные сообщения),
можно добавлять/изменять информацию о себе,
смена пароля.
оцените скрипт и скажите, пожалуйста, может в каких-то моментах что-то лучше по другому сделать?
У тебя подключение файлов какое то...попытайся делать все компактнее.
Функции в файле функций, тело в индекс.пхп, ноги в ногах, шапка в шапке...а то у тебя подкл. файла в другом файле который подкл., вообщем неудобно.
TOOZ, я тебя не понял не много..
у меня подключение к БД в файле connect.php потом просто подключаю его через require_once , а как нужно было сделать?
[php:1:6ebaf97965]function re_text($text){
return mysql_escape_string(trim(htmlspecialchars($text)));
}
$login=re_text($_POST['login']);
$pass=re_text($_POST['password']);
if (isset($_POST['ok'])){
$sql=mysql_query("SELECT * FROM `users` WHERE `login`='".$login."' AND `password`='".md5($pass)."' LIMIT 1");
if (mysql_num_rows($sql)==1){
$row=mysql_fetch_assoc($sql);
$query=mysql_query("SELECT * FROM `user_status` WHERE `login`='".$row['login']."' LIMIT 1");
$res=mysql_fetch_assoc($query);
$_SESSION['id']=$row['id'];
$_SESSION['login']=$row['login'];
$_SESSION['status']=$res['status'];
if (isset($_POST['save'])=='on'){
setcookie('login', $row['login'], time()+315360000, "/");
setcookie('id', $row['id'], time()+315360000, "/");
setcookie('status', $res['status'], time()+315360000, "/");
}
header('Location: ../index.php');
exit;}
} [/php:1:6ebaf97965]
1. Зачем фильтровать пароль, если ты его всеровно md5() прогоняешь, он возвращает только хэш из букв и цифр.
2. Я так понимаю статусы пользователей у тебя в другой таблице, так что, наверно лучше было бы статусы чтоб были просто в таблице users. Меньше запросов будет.
3. Используй mysql_real_escape_string() вместе простой. и trim, specialchars не нужно там в твоей функции...только риал_эскейп.
TOOZ, ок, спасибо
а статусы у меня в другой таблицы потому что пользователь может быть, к примеру, модером чата и гостевой книги (т.е. в таблице user_status просто создам две новых записи с его статусом), а если б у меня статусы были в users, то тогда я б две записи создать уже не смог бы (т.к. было б два пользователя с одинаковыми данными, отличающиеся только статусом)
--------
я еще в куки записываю чтоб пользователь при следующех заходе на сайт был уже авторизован, т.к. сессии уничтожаются при закрытии браузера
Ок. Я уже понял, потому подредачил пост.
Можно зайти под любым ником : поменяв в куках значение login.
[php:1:8cebaf5732]<?php
if (!empty($_COOKIE['login'])){
$_SESSION['login']=$_COOKIE['login'];
$_SESSION['id']=$_COOKIE['id'];
$_SESSION['status']=$_COOKIE['status'];}
require_once "menu.php";
foreach ($menu as $k=>$v){
echo '<a href="'.$v.'">'.$k.'</a><br>';
}
?>[/php:1:8cebaf5732]
TOOZ, о_О а как тода сделать что пользователь не мог зайти под любым логином?
20 Июл 2012, 14:40И так смело записывать в сессию значения из кукисов тоже не стоит.
$_SESSION['login']=$_COOKIE['login'];
Фильтровать надо.