Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сокращение кода
 
 автор: skazi   (25.11.2006 в 16:48)   письмо автору
 
 

Не могли бы вы посмотреть код и упростить его, в принципе задача скрипта маленькая, а сам скрипт такой громоздкий у меня получился, может что то можно упростить?
заранее спасибо.

<?
session_start
();
function 
logout()
{
session_start(); 
$_SESSION=array(); 
session_destroy(); 
}
function 
form()
{
echo
"<form action=index.php method=post>
Логин <br><input name=login maxlength=20><br>
Пароль <br><input type=password name=password maxlength=20><br>
<input type=submit value=Войти></form>"
;
}
if(isset(
$_SESSION['login']) && !empty($_SESSION['login']))
{
echo 
"$_SESSION[login] you online!";
echo 
'<br /><a href="page1.php">page 2</a>';
echo 
'<br><a href="log.php">log.php</a>';    
echo 
'<a href="?logout=1">Logout</a>';
if (
$_GET['logout']=="1")
{
logout();
}
}
else
{
form();
$login $_POST['login'];
$password $_POST['password'];
if (!empty(
$login) && !empty($password))
{
include(
'settings.php');
mysql_pconnect("localhost""$dbuser""$dbpass");
mysql_select_db("$db");
$query "SELECT * FROM users WHERE login='$login' AND password='$password'";
$result mysql_query($query);
$row mysql_fetch_array($resultMYSQL_ASSOC);
    if (
$login==$row["login"] && $password==$row["password"])
        {
         echo 
"$login, you online!";
         echo 
'<a href="?logout=1">Logout</a>';
         echo 
'<br /><a href="page1.php">page 2</a>';
         echo 
'<br><a href="log.php">log.php</a>';    
         }
else {
logout();
echo 
"Incorrect pass/login";
}
}
}
?>

   
 
 автор: skazi   (25.11.2006 в 17:38)   письмо автору
 
   для: skazi   (25.11.2006 в 16:48)
 

Никто не хочет мне помочь? :)

   
 
 автор: _Dreamer_   (25.11.2006 в 17:42)   письмо автору
 
   для: skazi   (25.11.2006 в 17:38)
 

мне например не кажется что код громоздкий...
едиственное что бы я изменил так это вместо нескольких подряд вызовов echo сделал бы один.. и ещё мне кажется что лучше настройки и соединение с базой сделать в одном отдельном скрипте котороый инклудится во все твои модули работающие с этой базой

   
 
 автор: skazi   (25.11.2006 в 17:46)   письмо автору
 
   для: _Dreamer_   (25.11.2006 в 17:42)
 

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

   
 
 автор: _Dreamer_   (25.11.2006 в 17:51)   письмо автору
 
   для: skazi   (25.11.2006 в 17:46)
 

хм... все ок ))
только вместо

$query = "SELECT * FROM users WHERE login='$login' AND password='$password'"; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 
    if ($login==$row["login"] && $password==$row["password"]) 
        { 
         echo "$login, you online!"; 
         echo '<a href="?logout=1">Logout</a>'; 
         echo '<br /><a href="page1.php">page 2</a>'; 
         echo '<br><a href="log.php">log.php</a>';     
         }

как мне кажется правильнее так

list($count) = @mysql_fetch_row(@mysql_query("SELECT count(*) FROM users WHERE login='$login' AND password='$password' LIMIT 1"));
if ($count == 1)
{
    echo "$login, you online!";
    echo '<a href="?logout=1">Logout</a>';
    echo '<br /><a href="page1.php">page 2</a>';
    echo '<br><a href="log.php">log.php</a>';
}

   
 
 автор: skazi   (25.11.2006 в 17:56)   письмо автору
 
   для: _Dreamer_   (25.11.2006 в 17:51)
 

И еще вопрос:
когда я залогинился, нажимаю на page1.php и возвращаюсь обратно(нажатием ссылки в page1.php) то у меня опять выводиться форма, хотя вначале скрипта есть проверка на сессии

   
 
 автор: _Dreamer_   (25.11.2006 в 18:13)   письмо автору
 
   для: skazi   (25.11.2006 в 17:56)
 

слушай.. я тут у себя проверил.. так вот...
1.
if(isset($_SESSION['login']) && !empty($_SESSION['login'])) 

- лучше так
if(session_is_registered('login') && session_is_registered('password'))

2. у тебя после
if ($login==$row["login"] && $password==$row["password"])

идет просто вывод сообщения об авторизации...
а нужно ещё регестрировать переменные в сессии
например так..

  session_register('login');
  session_register('password');

   
 
 автор: skazi   (25.11.2006 в 18:47)   письмо автору
 
   для: _Dreamer_   (25.11.2006 в 18:13)
 

спасибо, все оки)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования