php / mysql giriş, bir sunucu (php 5.0.2) üzerinde çalışır, ancak diğer (php 5.1.6) çalışmıyor

2 Cevap php

İşte kullanıcıların kimliğini doğrulamak için kullanmak ne aşağı elimden sürümü, benim php v5.0.2/mysql 4.0.21 sunucu üzerinde çalışıyor, ama benim php v5.1.6/mysql v5.0.45 sunucuda başarısız olur.

Aşağıdaki kodda, ben yeni php sürümü tarafından desteklenmiyor olabilir şey farkında olmalıdır mysql? Global değişkenler etkin olmuştur.

<?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 Cevap

Ben çünkü $HTTP_POST_VARS olabilecek tahmin ediyorum. $_POST ile bu değiştirmeyi deneyin. Hala işe yaramazsa, hemen sonra aşağıdaki kod parçasını koymayı deneyin <?php:

// Enable displaying errors
error_reporting(E_ALL);
ini_set('display_errors', '1');

register_long_arrays php.ini On = ayarlamayı deneyin ve sizin sorunları giderir görmek.

Başka bir kayda göre bu gibi sorguları kadar bina edilmemelidir. PHP MySQL escaping kullanarak içine bak.