|
|
|
| Извините пожалуйста за надоедливость.........................вот возникла очередная проблема
есть форма авторизации в которой если куки не сущ выводится форма, иначе какие-то данны:
<?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(!$qwerty) puterror("Ошибка при обрашении к личным данным");
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'>Участники «Online»</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
(09.02.2007 в 23:42)
| | ааааа........кто-нибудь помогите плиз!!!! | |
|
|
|
|
|
|
|
для: Hades
(10.02.2007 в 18:47)
| | Если на локалке, работает, а на хостинге нет, то вполне возможно, что на хостинге php стоит как cgi, тогда ошибка "естественная"... | |
|
|
|
|
|
|
|
для: ddhvvn
(10.02.2007 в 19:10)
| | т.е этот скрипт можно выбросить!!? или еще че-то можно поменять чтобы работало?? | |
|
|
|
|
|
|
|
для: ddhvvn
(10.02.2007 в 19:10)
| | >Если на локалке, работает, а на хостинге нет, то вполне возможно, что на хостинге php стоит как cgi, тогда ошибка "естественная"...
Это еще с каких гвоздей? | |
|
|
|
|
|
|
|
для: Trianon
(10.02.2007 в 23:09)
| | ммммм........а тогда в чем же проблема!? я вообще никак понять не могу :( | |
|
|
|
|
|
|
|
для: 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.
и то и другое не позволяет без лишнего напряжения его анализировать. | |
|
|
|