0

ログインスクリプトをまとめました。まとめると、フォーラムからコードの一部をコピーして貼り付け、試行錯誤しながら機能させることができます。

これまでのところ、スクリプトは正常に機能しています。ログインしても問題はありません。唯一の問題は、フィールドに入力せずにログインしようとすると、奇妙なエラーが発生し、空白のページにリダイレクトされます。

オブジェクトが移動しました

このドキュメントはここにあります

とにかく人々が空白のフィールドでログインしようとする理由がわからないので、それは大きな問題ではありませんが、将来の参考のために解決する方法を知りたいものです。

以下は私のコードのログイン部分です:

<?php
session_start();

$data=array("user1"=>array("url"=>"page1.php","password"=>"12345"),
            "user2"=>array("url"=>"page2.php","password"=>"12345"),
        "user3"=>array("url"=>"page3.php","password"=>"12345")
        );

if(isset($_POST['username']) && isset($_POST['password'])) {

    $user = strtolower($_POST['username']);
    $pass = strtolower($_POST['password']);

    if($data[$user]['password'] == $pass) {     
       $_SESSION['username'] = $user . " " . $pass;
       header('Location: ' . $data[$user]['url']);
    } else {
        echo '<script type="text/javascript">window.onload = function() { document.getElementById("loginError").innerHTML = "' . "Invalid login details. Please try again." . '"; }</script>';
        logIn();
    }
} else {
    logIn();
}
?>
4

4 に答える 4

1

`header('Location:'。$ data [$ user] ['url']);を確認または変更します。リダイレクト時の絶対パスであり、相対パスではありません。IIS7での私の答えPHPの証拠として関連する投稿を参照してください-実際にリダイレクトする代わりに「ObjectMoved」htmlページを受信します

その空白のパスワードの問題を修正するには、チェックを次のように変更します。

if(isset($_POST['username']) && !empty($_POST['username']) && 
    isset($_POST['password']) && !empty($_POST['password']) ) { 
    //Do code here
}
else
{
   logIn(); 
}
于 2012-08-31T06:54:13.093 に答える
0

使用したい文字列を比較する場合===、または!==

...
$user = strtolower(trim($_POST['username']));
$pass = strtolower(trim($_POST['password']));

if($user !== '' && $pass !== '') {
  //continue with login logic
  if($data[$user]['password'] === $pass) { 
  ...
}
else{
//print error
}
于 2012-08-31T06:54:40.337 に答える
-1

logIn()関数が定義されていないと思います...確認してください。まだの場合は、HTMLのコードも投稿してください。

于 2012-08-31T07:09:35.353 に答える
-1

存在しないアレイインデックスのパスワードとURLを読み取る前に、ユーザー名がアレイに存在することを確認する必要があります。

session_start();

$data=array("user1"=>array("url"=>"page1.php","password"=>"12345"),
            "user2"=>array("url"=>"page2.php","password"=>"12345"),
            "user3"=>array("url"=>"page3.php","password"=>"12345")
            );

if (!empty($_POST['username'] && !empty($_POST['password'])) {

    $user = strtolower($_POST['username']);
    $pass = strtolower($_POST['password']);

    if (isset($data[$user]) && $data[user]['password'] == $pass) {
        $_SESSION['username'] = $user . ' ' . $pass;
        header("Location: " . $daa[$user]['url']);
    } else {
        echo '<script type="text/javascript">window.onload = function() { document.getElementById("loginError").innerHTML = "' . "Invalid login details. Please try again." . '"; }</script>';
        logIn();
    }

} else {
    logIn();
}
于 2012-08-31T07:30:32.677 に答える