0

コード: sql.php

<?php
$uid = trim($_POST['uid']);
$pass= trim($_POST['pass']);
$type= trim($_POST['type']);
$link = mysql_connect("localhost","root","akash");
if (!$link) 
                 die('Could not connect: '.mysql_error());
if(!mysql_select_db("fsproj",$link))        
die("Can't Select database");
if ($type == 0 ) 
$query = "select uid from admin where uid = \"$uid\" AND password = \"$pass\"";
else
$query = "select username from user where uid = $uid AND pass = $pass";
$result = mysql_query("$query",$link);                        
$num_r=mysql_num_rows($result); 
        header("Location : codepage.php");
exit();
?>

コード: login.html

<html>
<form action="sql.php" method="post" name="form1" id="form1" target=result>
Enter UID

<textarea name="uid" id="uid" rows="1" cols="40"> 

</textarea><br>
Password

<textarea name="pass" id="pass" rows="1" cols="40"> 

</textarea><br>
Type

<textarea name="type" id="type" rows="1" cols="40"> 

</textarea>
<br>
<input type="submit" value="Submit" />
</form>
</html>

すべてのファイルは同じルート ディレクトリにあり、ユーザー ID とパスワードを login.html から sql.php に送信すると、ファイル codepage.php にリダイレクトされます (まだログイン チェックを追加していないため、パスワードとしてのユーザー名の任意の値に対して成功するはずです)。 )

しかし、そうしようとすると、空白のページしか表示されません。

ヘッダー呼び出しの後に出力ステートメントを追加すると、そのステートメントの出力が表示されます

本質的に、header("Location : codepage.php")効果はありませんでした

ヘッダー機能は、同じサイトの他のいくつかのページで機能します

4

4 に答える 4

2

ファイルだけでなく、全体のheader('Location: address')URL を含める必要があります。

これは、プロトコル、ドメイン、またはフォルダーとファイルを意味します。

header('Location: http://wwww.google.com'); 

ドキュメント:

http://php.net/manual/en/function.header.php

これは、ポイント 14.30 の Location ヘッダーの w3 仕様です (「14.30 Location」を検索してください)。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

w3 を引用するには:

フィールド値は、単一の絶対 URI で構成されます。

コメントにあるように、コロン (:) の前後に空白を入れてはいけません。

于 2012-04-11T05:54:11.713 に答える
2

中括弧を使用します。あなたのコードはそのまま壊れています。また、header('Location: codepage.php')ではなくheader('Location : codepage.php')です。追加した余分なスペースに注意してください。

削除された

于 2012-04-11T05:55:03.440 に答える
2

あなたのコードは に対して脆弱ですSql Injectionmysql_real_escape_string()を使用してフィルタリングします。お気に入り:

 $pass= mysql_real_escape_string(trim($_POST['pass']));

また、codepage.php への正しいアドレスがあることを確認してください。試す

header('Location: /codepage.php'); //OR
header('Location: http://site.com/to/codepage.php');
于 2012-04-11T05:57:17.607 に答える
1

header( "Location:codepage.php");を使用してください。

問題は場所との間のスペースです:それは私のために働いています、それがあなたのために働くことを願っています

于 2012-04-11T06:02:58.820 に答える