-2

この種の質問は以前に尋ねられましたが、私はまだ問題を抱えていますが、これは PHP の最新の構文でもあります。

正しくログインしているかどうかはわかりません。ログインするたびに、if(isset) と if(!authorized) が実行されているようです。

正しい方向への助けがあれば、とても感謝しています。

ログインする 。php

        <table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
        <tr>
        <form name="form1" method="post" action="checklogin.php">
        <td>
        <table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
        <tr>
        <td colspan="3"><strong>Member Login </strong></td>
        </tr>
        <tr>
        <td width="78">Username</td>
        <td width="6">:</td>
        <td width="294"><input name="myusername" type="text" id="myusername"></td>
        </tr>
        <tr>
        <td>Password</td>
        <td>:</td>
        <td><input name="mypassword" type="text" id="mypassword"></td>
        </tr>
        <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td><input type="submit" name="Submit" value="Login"></td>
        </tr>
        </table>
        </td>
        </form>
        </tr>
        </table>

チェックログイン。php // PHP では、これはコメントを行う方法であり、PHP を再度開きます。DEFINE ('DB_USER', 'ルート'); // データベース ユーザーを定義します。DEFINE ('DB_PSWD', ''); // データベースのパスワードを定義します。DEFINE ('DB_HOST', 'localhost'); // データベース ホストの定義。DEFINE ('DB_NAME', '写真'); // データベース名の定義。

        $tbl_name="userpass"; // Table name 
        $dbcon = mysql_connect(DB_HOST, DB_USER, DB_PSWD, DB_NAME);         // Connecting to mySQL with defined above.

        if (!$dbcon){                                                       // If error in connecting, mySQL error. 
            die('Could Not Connect: ' . mysql_error());                     // Give mySQL error.
        }                                                                   

        $db_selected = mysql_select_db(DB_NAME, $dbcon);                    // Selecting Database based on name.

        if (!$db_selected){                                                 // If error in connecting, mySQL error.
            die('Could Not Use: ' . DB_NAME . ' : ' . mysql_error());       // Give mySQL error.
        }

        // username and password sent from form
        $myusername=$_POST['myusername'];
        $mypassword=$_POST['mypassword'];

        // To protect MySQL injection (more detail about MySQL injection)
        $myusername = stripslashes($myusername);
        $mypassword = stripslashes($mypassword);
        $myusername = mysql_real_escape_string($myusername);
        $mypassword = mysql_real_escape_string($mypassword);

        $sql="SELECT * FROM " . $tbl_name." WHERE user='".$myusername."' and password='".$mypassword."'";
        $result=mysql_query($sql);

        // Mysql_num_row is counting table row
        $count=mysql_num_rows($result);

        // If result matched $myusername and $mypassword, table row must be 1 row

        if($count==1){
        session_start();            
        $_SESSION['$myusername'];
        $_SESSION['$mypassword'];
        header("location:loggedin.php");
     }
     else {
     session_unset();
     session_destroy();
     $_SESSION = array();
     session_start();        
     }

ログインしています。php

    // Check if session is not registered, redirect back to main page.
    // Put this code in first line of web page.
    $authorized=false;
    @session_start();
    if(isset($_SESSION['myusername'],$_SESSION['mypassword']))
    {
        $authorized = true;
    }

    if(!authorized)
    {
        header('location:login.php');
        exit();
    }


        Login Successful
4

2 に答える 2

1

あなたがそれを設定した方法、あなたが実際に望むのは

$_SESSION['myusername'] = $myusername;
$_SESSION['mypassword'] = $mypassword;

あなたが今実際に行っているのは、キー「myusername」と「mypassword」を使用して値をセッションに挿入するのではなく、リテラルのユーザー名とパスワードのキーを使用してセッションから値を取得することです。

この件について話している間、パスワードをセッションやその他の場所に保存したくないでしょう。パスワードのソルト化およびハッシュ化された値を保存していることを確認してください。ユーザーがパスワードを提供したら、サーバー側でそれをハッシュし、結果のハッシュをデータベースに格納されているハッシュと比較します。

于 2013-06-08T08:02:44.740 に答える