1

テストサーバーで動作するプロジェクトがありますが、別のサーバーに移動すると動作しなくなりました。主にPHPだと思いますが、ここで意見をお聞きします。したがって、私のメイン ページは、次のように、php スクリプト ファイルを呼び出す POST を含むフォームを持つログイン用の HTML です。

<form method="POST" action="prologin.php">
    Name: <input type="text" name="nam"><br>
    Password: <input type="password" name="pas"><br>
    <input type="submit" value="Login" data-inline="true" data-icon="gear">
</form>

prologin.php ファイルは次のようになります。

<?php
session_start();
include 'mycon.php';
$nume1=mysql_real_escape_string( $_REQUEST['nam'] );
$pass1=mysql_real_escape_string( $_REQUEST['pas'] );

$s = "SELECT * FROM uzers WHERE uzname = '$nume1' and pass = md5('$pass1')";

var_dump($s);
... followed by other validations and stuff.

HTML ファイルを実行して [送信] ボタン (ログイン) をクリックすると、Chrome または Firefox で「未定義」ページが表示され、「ソースを表示」すると、上記の値が空の SQL が表示されます。あれは:

string(56) "SELECT * FROM uzers WHERE uzname = '' and pass = md5('')"

何が間違っている可能性がありますか?PHP が REQUEST 変数を受け取らないのはなぜですか? それが起こると私が想定していることだからです。修正するにはどうすればよいですか?

4

3 に答える 3

0

これは、フォームを送信する前に最初にページをロードしたときに発生します。この場合、$_REQUEST または $_POST が存在しません。変数を確認することでこれを回避できます。

if(isset($_REQUEST['nam']) && isset($_REQUEST['pas'])){
  include 'mycon.php';
  $nume1=mysql_real_escape_string( $_REQUEST['nam'] );
  $pass1=mysql_real_escape_string( $_REQUEST['pas'] );

  $s = "SELECT * FROM uzers WHERE uzname = '$nume1' and pass = md5('$pass1')";
  //other staff
}
于 2013-07-22T01:12:25.190 に答える
0

どうやら、これをFORMに追加する必要があったようです:

data-ajax="false" 

jQuery モバイルが送信動作をハイジャックするのを防ぐためです。これをフォームに追加した後、POST は正常に動作しています。あなたの時間とアイデアに感謝しますが、それらは私の問題を解決するのに役立ちませんでした. ただし、この情報は将来役立つ場合があります。

于 2013-07-23T19:45:22.610 に答える
0

問題のあるコードが見つかるまで、php を削除します。$_REQUEST のインスタンスを $_POST に置き換え、ページがロードされたときにそれらをエコーし​​て、正常に渡されていることを確認します。あなたのクエリが空白のパラメータでエコーアウトするという事実は、 $_REQUEST が問題だと思います..

<?php
 echo $_POST['nam'];
 echo $_POST['pas'];

最初に、ページが処理されたときに何が起こるかを見てください..

于 2013-07-22T01:24:51.830 に答える