0

ログイン入力が正しくない場合、ユーザーをログイン ページにリダイレクトしています。

$sql = "select * from Driver where username=$username and pwd=$pwd";
$driver = mysql_query($sql);

if(!$driver){
  header("Location: http://domain.de/login.php");
  exit();
}

"sorry, username isnot correct"ログインページのようなメッセージを渡すことはできますか?

私はセッションを使用したくありません。get はここではオプションではありません

4

5 に答える 5

1

you could do it like

header("Location: http://domain.de/login.php?error=username");

and do on the other page

if ($_GET['error'] == 'username') {
    echo 'Sorry, username is not correct!';
}

EDIT: Watch out for SQL injection also

于 2013-05-17T16:48:50.973 に答える
1

最善の解決策は、その login.php ページを現在のスクリプト (コントローラー) の一部 (ビュー) として読み込み、変数にメッセージの値を設定することだと思います。何かのようなもの:

if(!$driver){
$message = "Sorry, username isnot correct";
} 
else {
$message = "Whatever";
}
include('login.php');

$message は login.php スクリプト内で利用できます。

于 2013-05-17T17:00:56.500 に答える
1

ロケーション ヘッダーに get パラメータを追加するか、セッションにメッセージ フラグを保存することができます。このような:

 $sql = "select * from Driver where username=$username and pwd=$pwd";
 $driver = mysql_query($sql);

 if(!$driver){
     header("Location: http://domain.de/login.php?wasredirect=1");
     exit();
 }

 //////// In login.php

 if (isset($_GET['wasredirect'])) {
     echo "sorry, username isnot correct";
 }

またはこれ:

     $sql = "select * from Driver where username=$username and pwd=$pwd";
 $driver = mysql_query($sql);

 if(!$driver){
     header("Location: http://domain.de/login.php");
     if (!isset($_SESSION)) {
         session_start();
     }
     $_SESSION['redirect'] = true;
     exit();
 }

 //////// In login.php

 if (!isset($_SESSION)) {
     session_start();
 }
 $_SESSION['redirect'] = true;
 if (isset($_SESSION['redirect']) &&$_SESSION['redirect'] ) {
     echo "sorry, username isnot correct";
     unset($_SESSION['redirect']);
 }
于 2013-05-17T16:51:46.297 に答える
1

単純にメッセージを送信する場合は、URL に追加できます。

header("Location: http://domain.de/login.php?e=1234");

柔軟性を高めるために、フルレングスのメッセージではなくエラー コードを使用することをお勧めします。

ただし、これを正しく行うには、MVC パターンを実装し、エラー ページのルーティングを内部的にロードする必要があることに注意してください。しかし、それは小さなスクリプトには多すぎるかもしれません。

私はあなたがあなたの質問にフィードバックを寄せていないことを知っています. SQL インジェクションの意味がよくわからない場合を除き、心配する必要はありません。

宜しくお願いします

ゾルト

于 2013-05-17T16:53:33.213 に答える
-3

クエリを次のように変更します。

$sql = "select * from `Driver` where `username`='$username' and `pwd`='$pwd'";

バッククォートと一重引用符に注意してください

于 2013-05-17T16:53:38.130 に答える