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

Форум PHP

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

 

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

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

тема: Проблема с авторизацией на хостинге
 
 автор: Hades   (09.02.2007 в 23:42)   письмо автору
 
 

Извините пожалуйста за надоедливость.........................вот возникла очередная проблема
есть форма авторизации в которой если куки не сущ выводится форма, иначе какие-то данны:

<?php
// Если посетитель не авторизировался, то выводим форму авторизации
if((!isset($_COOKIE['name'])) && (!isset($_COOKIE['password'])))
{
  
$name $_COOKIE['name'];
  
$pass $_COOKIE['password'];
?>
<table width="150px" cellspacing="0" cellpadding="0" style="border: 1px solid silver; margin-top: 10px; padding: 4px;">
</script>
<tr><td style="text-align: center;">Авторизация</td></tr>
<tr><td>
<div align='center'>
<form action="index.php?options=authorization" method="post">
<input type="hidden" name="authoriz" value="post">
Имя посетителя<br><input type="text" name="name" style="width: 120px; height: 16px; background-color: #eee; border: 1px #999 solid; font-family: Verdana,Tahoma,Arial,Sans-Serif; font-size: 12px; color: #000;" maxlength="30" value="<?php echo htmlspecialchars($name); ?>"><br>
Пароль<br><input type="password" name="password" style="width: 120px; height: 16px; background-color: #eee; border: 1px #999 solid; font-family: Verdana,Tahoma,Arial,Sans-Serif; font-size: 12px; color: #000;" maxlength="30" value="<?php echo htmlspecialchars($pass); ?>"><br>
<input value="submit" type="image" src="images/enterform.gif" style="width: 60px; height: 20px;" value="Войти"></form>
<span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; font-weight: bold; font-style: italic; color: silver; text-decoration: none;">Не зарегистрированны?</span><br><a href='index.php?options=registration' class="textbox"><U>Нажмите здесь</U></a><span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9px; font-weight: bold; font-style: italic; color: silver; text-decoration: none;"> для регистрации.</span>
</div>
</td></tr>
</table>
<?php
}
else
{
   
$query="SELECT name, photo FROM userlist";
   
$qwerty=mysql_query($query);
   if(!
$qwertyputerror("Ошибка при обрашении к личным данным");
   if(
mysql_num_rows($qwerty) > 0)
   {
           while(
$queryy mysql_fetch_array($qwerty))
           {
                   if(
strtolower($_COOKIE['name'])==strtolower($queryy['name']))
                   {
                           
// Если посетитель "вошёл" - приветствуем его
                           
echo "<table width='150px' cellspacing='0' style='border: 1px solid silver; border-collapse: collapse; padding: 0px; margin-top: 10px; text-align: left;'>";
                           echo 
"<tr><td style='text-align: center; vertical-align: middle; border: 1px dotted silver;'>Привет, ".$queryy['name']."!</td></tr>";
                           echo 
"<tr><td style='width: 100%;' align='center' style='padding: 0px; border: 1px dotted silver;'><img src='".$queryy['photo']."' style='border: 2px solid silver; text-align: center;'></td></tr>";
                           echo 
"<tr><td><a href=index.php?options=userinfo&user=".strtolower($queryy['name']).">Мой профиль</a></td></tr>
                           <tr><td><a href='index.php?options=personally'>Сообщения</a></td></tr>
                           <tr><td><a href='index.php?options=userslist'>Все участники</a></td></tr>
                           <tr><td><a href='index.php?options=onlinelist'>Участники &#171;Online&#187;</a></td></tr>
                           <tr><td><a href='index.php?options=exit'>Выход</a></td></tr>"
;
                           echo 
"</table>";
                   }
                   else
                   {
                           continue;
                   }
           }
   }
}
?>

есть ее обработчик взятый и с вашего форума и мемного передаланный:

<?php
$error 
"";
$action "";
$action $_POST["authoriz"];
$name $_POST['name'];
$password $_POST['password'];
if (!empty(
$action))
{
if (empty(
$name))
{
    
$action "";
    
$error $error."<LI>Вы не ввели имя\n";
}
if (empty(
$password))
{
    
$action "";
    
$error $error."<LI>Вы не ввели пароль\n";
}
$name str_replace("'","`",$name);
$password str_replace("'","`",$password);
if (!
get_magic_quotes_gpc())
{
    
$name mysql_escape_string($name);
    
$password mysql_escape_string($password);
}
    
$query "SELECT id_user,password, name FROM userlist WHERE password = ".md5(password)." AND name='$name'";
    
$nme mysql_query($query);
    if(!
$nme)
    {
      echo 
mysql_error();
      echo 
"Ошибка при обращении к таблице юзеров...";
      exit();
    }
    if(
mysql_num_rows($nme) > 0)
    {
           
// Устанавливаем в кукисах автора и его пароль
           
cookiefunction($name$password);
           echo 
"<HTML><HEAD>
                 <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>
                 </HEAD><body>"
;
    }
    else
    {
      echo 
"Ошибка идентификации: посетитель не зарегистрирован";
      exit();
    }
}
  if (!empty(
$error))
  {
    print 
"<P><font color=green>Во время добавления записи произошли следующие ошибки: </font></P>\n";
    print 
"<UL>\n";
    print 
$error;
    print 
"</UL>\n";
  }
?>

проблема в том что это конструкция на локалке работает........а вот на хостинге он все время мне выдает форму авторизации когда должен по идеи выдать данные пользователя ..........вот ника не могу понять почему и как это изменить???
PS заранее благодарен ))))) у вас отличный форум!

   
 
 автор: Hades   (10.02.2007 в 18:47)   письмо автору
 
   для: Hades   (09.02.2007 в 23:42)
 

ааааа........кто-нибудь помогите плиз!!!!

   
 
 автор: ddhvvn   (10.02.2007 в 19:10)   письмо автору
 
   для: Hades   (10.02.2007 в 18:47)
 

Если на локалке, работает, а на хостинге нет, то вполне возможно, что на хостинге php стоит как cgi, тогда ошибка "естественная"...

   
 
 автор: Hades   (10.02.2007 в 20:29)   письмо автору
 
   для: ddhvvn   (10.02.2007 в 19:10)
 

т.е этот скрипт можно выбросить!!? или еще че-то можно поменять чтобы работало??

   
 
 автор: Trianon   (10.02.2007 в 23:09)   письмо автору
 
   для: ddhvvn   (10.02.2007 в 19:10)
 

>Если на локалке, работает, а на хостинге нет, то вполне возможно, что на хостинге php стоит как cgi, тогда ошибка "естественная"...

Это еще с каких гвоздей?

   
 
 автор: Hades   (11.02.2007 в 00:21)   письмо автору
 
   для: Trianon   (10.02.2007 в 23:09)
 

ммммм........а тогда в чем же проблема!? я вообще никак понять не могу :(

   
 
 автор: Trianon   (11.02.2007 в 01:24)   письмо автору
 
   для: Hades   (11.02.2007 в 00:21)
 

Я возразил ddhvvn, поскольку он связал неработоспособность скрипта с CGI-вариантом установки php. Такой эффект мог бы происходить, используй этот скрипт php-средства HTTP-аутентификации. Но он не использует, так что высказывание ddhvvn притянуто сюда за уши.

Что касается причин неработоспособности скрипта, то я изначально не хотел их комментировать.
Почему?
Скипт зияет багами. Причем зияет с самых первых строк.
Вот:

if((!isset($_COOKIE['name'])) && (!isset($_COOKIE['password']))) 

  $name = $_COOKIE['name']; 
 


Вот:

$action = ""; 
$action = $_POST["authoriz"]; 
$name = $_POST['name']; 
$password = $_POST['password']; 
if (!empty($action)) 


Вот:

$name = str_replace("'","`",$name); 
$password = str_replace("'","`",$password); 
if (!get_magic_quotes_gpc()) 


Вот:

    $password = mysql_escape_string($password); 


Вот:

    ....WHERE password = ".md5(password)." AND name='$name'"; 


Это только то, что я вижу навскидку.

Более детально разбираться у меня, например, нет никакого желания потому,
что и без багов скрипт
а) имеет неряшливую структуру отступов
б) замусорен совершенно ненужной оформительской мишурой, вроде css.
и то и другое не позволяет без лишнего напряжения его анализировать.

   
Rambler's Top100
вверх

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