Вход в PHP / MySQL работает на одном сервере (PHP 5.0.2), но не работает на другом (PHP 5.1.6) - PullRequest
0 голосов
/ 20 октября 2008

Вот урезанная версия того, что я использую для аутентификации пользователей, она отлично работает на моем сервере PHP v5.0.2 / MySQL 4.0.21, но не работает на моем сервере PHP v5.1.6 / MySQL v5.0.45.

В приведенном ниже коде я должен знать о чем-либо, что может не поддерживаться более новой версией PHP & MySQL? Глобальные переменные включены.

<?php
  if(!isset($HTTP_POST_VARS['username'])&&!isset($HTTP_POST_VARS['password']))
  {
    //Visitor needs to enter a name and password
?>
    <h1>Please Log In</h1>
    This page is secret.
    <form method="post" action="<?php echo $PHP_SELF;?>">
    <table border="1">
    <tr>
      <th> Username </th>
      <td> <input type="text" name="username"> </td>
    </tr>
    <tr>
      <th> Password </th>
      <td> <input type="password" name="password"> </td>
    </tr>
    <tr>
      <td colspan="2" align="center">
        <input type="submit" value="Log In">
      </td>
    </tr>
    </table>
    </form>
<?php
  }
  else
  {
    // connect to mysql
    include('../cgi-bin/db.php');

    $username = $HTTP_POST_VARS['username'];
    $password = md5($HTTP_POST_VARS['password']);

    if(!$db)
    {
      echo 'Cannot connect to database.';
      exit;
    }
    // select the appropriate database
    $mysql = mysql_select_db('quickwebcms');
    if(!$mysql)
    {
      echo 'Cannot select database.';
      exit;
    }

    // query the database to see if there is a record which matches
    $query = "select count(*) from auth where
              username = '$username' and
              password = '$password'";

    $result = mysql_query( $query );
    if(!$result)
    {
      echo 'Cannot run query.';
      exit;
    }

    $count = mysql_result( $result, 0, 0 );

    if ( $count > 0 )
    {
      // visitor's name and password combination are correct
      echo '<h1>Here it is!</h1>';
      echo 'I bet you are glad you can see this secret page.';
    }
    else
    {
      // visitor's name and password combination are not correct
      echo '<h1>Go Away!</h1>';
      echo 'You are not authorized to view this resource.';
    }
  }
?>

Ответы [ 2 ]

4 голосов
/ 20 октября 2008

Полагаю, это может быть из-за $HTTP_POST_VARS. Попробуйте заменить это на $_POST. Если это все еще не работает, попробуйте поместить следующий фрагмент сразу после <?php:

// Enable displaying errors
error_reporting(E_ALL);
ini_set('display_errors', '1');
3 голосов
/ 20 октября 2008

Попробуйте установить register_long_arrays = Вкл в php.ini и посмотрите, исправит ли это ваши проблемы.

С другой стороны, вы не должны строить свои запросы таким образом. Изучите использование PHP MySQL, экранирующего .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...