代码: 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>
所有文件都在同一个根目录下,通过login.html将用户标识和密码提交到sql.php应该重定向到文件codepage.php(我还没有添加登录检查,所以应该成功获取任何值用户名作为密码)
但是当我尝试这样做时,我得到的只是一个空白页。
如果我在标题调用后添加一个输出语句,我会看到该语句的输出
基本上,header("Location : codepage.php")
没有效果
标题功能适用于同一网站上的其他一些页面
答案 0 :(得分:2)
header('Location: address')
应包含整个网址,而不仅仅是文件。
这意味着协议,域以及文件夹和文件。
header('Location: http://wwww.google.com');
文档:
http://php.net/manual/en/function.header.php
以下是14.30点位置标题上的w3规范(搜索'14 .30位置')
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
要问w3:
字段值由单个绝对URI组成。
如评论中所述,冒号(:)之前或之后可能没有任何空格。
答案 1 :(得分:2)
使用大括号。您的代码已经破坏了。此外,它是header('Location: codepage.php')
,而不是header('Location : codepage.php')
。注意你添加的额外空间。
<强> REMOVED 强>
答案 2 :(得分:2)
您的代码容易受Sql Injection
攻击。使用mysql_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');
答案 3 :(得分:1)
请使用标题(“位置:codepage.php”);
问题是位置和之间的空间: 它对我有用,希望它适用于你