Xwab
Форумыnavigate_nextСкрипты

оцените скрипт
Сообщения
BloodStarsz

я php только учу, вот написал нечто похожее на скрипт
в нем присутствуют:
регистрация,
вход по своим логином,
чат (добавление/удаление записей),
гостевая книга (добавление/удаление/редактирование записей),
новости (добавление/удаление записей),
ЛС (личные сообщения),
можно добавлять/изменять информацию о себе,
смена пароля.
оцените скрипт и скажите, пожалуйста, может в каких-то моментах что-то лучше по другому сделать?

20 Июл 2012, 14:00
MuSTAnG

Скинь на хостинг.

20 Июл 2012, 14:04
BloodStarsz

MuSTAnG, у меня хостинга нет, поэтому я делал на денвере.

20 Июл 2012, 14:07
TOOZ

У тебя подключение файлов какое то...попытайся делать все компактнее.

Функции в файле функций, тело в индекс.пхп, ноги в ногах, шапка в шапке...а то у тебя подкл. файла в другом файле который подкл., вообщем неудобно.

20 Июл 2012, 14:19
BloodStarsz

TOOZ, я тебя не понял не много..
у меня подключение к БД в файле connect.php потом просто подключаю его через require_once , а как нужно было сделать?

20 Июл 2012, 14:23
TOOZ

[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 не нужно там в твоей функции...только риал_эскейп.


__________
посл.ред. 20 Июл 2012, 14:32; всего 1 раз 20 Июл 2012, 14:27
BloodStarsz

TOOZ, ок, спасибо
а статусы у меня в другой таблицы потому что пользователь может быть, к примеру, модером чата и гостевой книги (т.е. в таблице user_status просто создам две новых записи с его статусом), а если б у меня статусы были в users, то тогда я б две записи создать уже не смог бы (т.к. было б два пользователя с одинаковыми данными, отличающиеся только статусом)
--------
я еще в куки записываю чтоб пользователь при следующех заходе на сайт был уже авторизован, т.к. сессии уничтожаются при закрытии браузера

20 Июл 2012, 14:29
TOOZ

Ок. Я уже понял, потому подредачил пост.

Можно зайти под любым ником : поменяв в куках значение 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]

20 Июл 2012, 14:36
BloodStarsz

TOOZ, о_О а как тода сделать что пользователь не мог зайти под любым логином?

20 Июл 2012, 14:40
TOOZ

И так смело записывать в сессию значения из кукисов тоже не стоит.
$_SESSION['login']=$_COOKIE['login'];
Фильтровать надо.

20 Июл 2012, 22:20
Ответить на тему