0
<?php

    $userid = $_POST["userid"];
    $pword = $_POST["pword"];

    # session

    session_start();

    # check that session is valid and set

    if(!isset($_SESSION['login']))
    {
        header('Location: login.php');
    }

    # check that the required values have been entered
    $testin1 = ($userid);
    $testin2 = ($pword);

    if($testin1 == "") 
    {
        print "<hr><h1> No Username Entered, Please return to the Login page</h1></hr>";
    }
    elseif ($testin2 == "") 
    {
        print "<hr><h1> No Password Entered, Please return to the Login page</h1></hr>";
    }

    # Connect to database

    $connect = mysql_connect ("localhost","root") or die("Error Connecting to SQLServer"); 
    $db = mysql_select_db ("test");

    # query  

      $query = mysql_query ("select username from login where username = '$userid' and pword = '$pword';");

    if($query === FALSE) 
    {
        die(mysql_error());
    }

    $result = mysql_fetch_array($query);
    $record = $result['username'] ;

    if ($record != null) 
    # check if session is operational, if so redirect the user to the correct page    
    {
        $_SESSION['login'] = true;
        header( 'Location: index.php' ) ;
    }
    else if ($record == null) 
    {
        header( 'Location: login.php' );
    }
?>

これが機能していない場所を誰かが知っていますか?「エラーがない」ようですが、index.phpページではなくlogin.phpページにリダイレクトされ続けます。私はPHPの比較的初心者なので、どんな助けでも素晴らしいでしょう。

ありがとう

4

3 に答える 3

2

使用mysql_fetch_array(). しているキーで結果にアクセスするには、使用する必要がありますmysql_fetch_assoc().

$result = mysql_fetch_assoc($query);
  $record = $result['username'] ;

mysql_real_escape_string()を使用してユーザー入力をエスケープすることが常に最善であることに注意してください。

于 2012-09-11T08:59:00.147 に答える
0

問題はセッションにあるようです。$_SESSION ['login']が設定されているかどうかを確認してください。これは、!isset()かどうかを確認してから、login.phpページにリダイレクトしているためです。コードをデバッグしてセッション変数を確認するだけです

于 2012-09-11T09:01:18.977 に答える
0

が出力される前に、ユーザーにデータを出力している可能性があるようですheader()。あなたは<HR>sと出力を持っています(私はそれがエラーがある場合にのみあることを知っています)が、それらを使用しているなら、あなたは<HTML>コードの上になどを持っている可能性があります。

その場合、他のヘッダーは機能しません。

(コメントするには長すぎる回答として投稿する-そして問題になる可能性があります。

このコードを試してください:

<?php

    session_start();
    $userid = $_POST["userid"];
    $pword = $_POST["pword"];

    // check that the required values have been entered
    $testin1 = ($userid);
    $testin2 = ($pword);

    if($testin1 == "") 
    {
        print "<hr><h1> No Username Entered, Please return to the Login page</h1></hr>";
    }

    if ($testin2 == "") 
    {
        print "<hr><h1> No Password Entered, Please return to the Login page</h1></hr>";
    }

    // Connect to database

    $connect = mysql_connect ("localhost","root") or die("Error Connecting to SQLServer"); 
    $db = mysql_select_db ("test");

    // query  

      $query = mysql_query ("select username from login where username = '$userid' and pword = '$pword';");

    if($query === FALSE) 
    {
        die(mysql_error());
    }

    $result = mysql_fetch_array($query);
    $record = $result['username'] ;

    if ($record != null) 
    // check if session is operational, if so redirect the user to the correct page    
    {
        $_SESSION['login'] = true;
        header( 'Location: index.php' ) ;
    }
    else if ($record == null) 
    {
        header( 'Location: login.php' );
    }
?>

ロジックを少し変更するだけでなく、いくつかのことを調べて移動しました。

于 2012-09-11T09:01:43.493 に答える