Мой PHP логин больше не работает - PullRequest
2 голосов
/ 07 июня 2010

Эта страница годами работала как чудо ... введите соответствующий идентификатор пользователя и пароль, и вы будете перенаправлены в свой каталог. Теперь внезапно все попытки входа в систему - действительные или нет - приводят к тому, что страница остается статичной ... нет сообщений, нет перенаправления, ничего.

Ничего в коде не изменилось, просто больше не работает. Может ли это быть результатом каких-то изменений на стороне сервера?

Да, я знаю, что это не очень безопасно, но этого было достаточно для наших целей. Я, конечно, открыт для лучших предложений. Мне просто нужно, чтобы это работало ... и продолжало работать.

Пожалуйста, будь нежным! Я почти ничего не знаю о программировании.

Вот код страницы:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<link href="ilium.css" rel="stylesheet" media="screen">
<title>Ilium: Client Login</title>
</head>
<body bgcolor="#bfbfcc" background="img/loginbg.gif">
<?php


/* init vars */
$userExists = false;
$userIndex = -1;
$authenicated = false;

/*********************************************** 
* edit this to add new users/password         *
* - add user/pass/directory to the array      *
* below: must be in same array index to work  *
***********************************************/
$user = array('foo', 'bar');
$pass = array('foo', 'bar');
$directory = array('foo', 'bar');

// run user/pass check if data passed
if (isset($username) && isset($password))
{

// check if user name exists
for ($i = 0; $i < count($user); $i++)
{
if ($user[$i] == $username)
{
$userExists = true;
$userIndex = $i;
break;
}
}

// so user exists, now test password
if ($userExists)
{
$message = $message . "Username Valid<br>\n";

if ($pass[$userIndex] == $password)
{
$authenicated = true;
$link = "/incoming/clients050203/" . $directory[$userIndex] . "/";
$message = $message . "Password Valid - Redirecting to your folder...<br>\n";
}
else
{
$message = $message . "Incorrect Password<br>\n";
}
}
else
{
$message = $message . "Incorrect User Name<br>\n";
}

}
?>




<?php

// user has been authenicated - move them to the correct directory
if ($authenicated)
{
    echo "<META HTTP-EQUIV=Refresh CONTENT=\"0; URL=" . $link . "\">";
}
?>

<img src="img/spacer.gif" alt="" width="1" height="112" border="0">
<form action="login.php" method="post">

<table width="496">
<tr>
 <td width="100"></td>
 <td colspan="4" width="469"><img src="img/please.gif" alt="" width="469" height="19" border="0"></td>
</tr>
<tr>
 <td width="100"><img src="img/spacer.gif" alt="" width="100" height="1" border="0"></td>
 <td width="227">

   <img src="img/spacer.gif" alt="" width="227" height="1" border="0"><br>
 </td>
<td align="right" valign="top" width="84"><input type="text" name="username" size="12"><br></td>
 <td width="43"><img src="img/spacer.gif" alt="" width="43" height="1" border="0"><br>
  <br>
 </td>
 <td align="right" valign="top" width="109"><input type="password" name="password" size="16">
  <p><br>
  </p>
 </td>
</tr>
<tr>
 <td width="100"></td>
 <td valign="top" width="227"><div class="messages"><?=$message?></div></td>
<td width="84"><br>
 </td>
 <td width="43"><br>
 </td>
 <td align="right" width="109"><input type="image" src="img/enter.gif" ALT="enter"><br>
  <br>
  <br>
  <br>
  <br>
 </td>
</tr>
</table>

 </form>
 </body>
 </html>

Ответы [ 4 ]

4 голосов
/ 07 июня 2010

Насколько я вижу, ваш код опирается на register_globals, который устарел в течение многих лет. Возможно, ваш сервер был обновлен до более новой версии php.

Использование register_globals - это действительно плохо, не то, что «ты не должен», а «это безумие». Пожалуйста, не пытайтесь найти работу вокруг. Для достижения цели используйте параметры $ _GET и $ _POST.

3 голосов
/ 07 июня 2010

Похоже, вы зависите от инициализации глобальных переменных, а не от их правильного использования.Вы используете $ username и $ password без их инициализации.Правильный путь будет следующим:

$ username = $ _POST ['username'];$ password = $ _POST ['password'];

Перед их использованием.Это приведет к тому, что они обновят содержимое на стороне сервера.

3 голосов
/ 07 июня 2010

Читайте о register_globals и о том, почему вы должны их отключать (возможно, кто-то это сделал). Используйте массив $ _POST.

Кстати: если я могу угадать путь к /incoming/clients050203/...../, могу ли я полностью обойти ваш сценарий входа? Похоже, это ..

BTW2: теперь я также вижу «<? = $ Message?>», Которые называются short_open_tags, которые, вероятно, исчезнут где-то в будущем. Просто чтобы не допустить сегодняшнего беспорядка через несколько лет:)

0 голосов
/ 07 июня 2010

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

Это не исправит вашу безопасность, но попробуйте поместить весь код PHP перед любым объявлением HTML и используйте:

header('Location: ' . /incoming/clients050203/" . $directory[$userIndex] . "/');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...