2

我的不涉及任何数据库或会话的代码给出了完美的结果

<!DOCTYPE html>
<?php
if(isset($_GET["engine"]))
{
if($_GET["engine"]=="google")
header("Location:http://www.google.com/search?q=".$_GET["q"]);
elseif($_GET["engine"]=="yahoo")
header("Location:http://search.yahoo.com/search?q=".$_GET["q"]);
if($_GET["engine"]=="bing")
header("Location:http://www.bing.com/search?q=".$_GET["q"]);
}
?>
<html>
<head>
<title>Fake search</title>
</head>
<body>
<form action="fakeSearch.php" method="GET">
<input type="text" name="q" value=""/><br/>
Google <input type="radio" name="engine" value="google"/><br/>
Yahoo <input type="radio" name="engine" value="yahoo"/><br/>
Bing <input type="radio" name="engine" value="bing"/><br/>
<input type="submit"/>
</form>
</body>
</html>

但是当我创建一个登录页面并重定向到 home.php 时,它的代码与上面的会话变量相同,它给了我错误找不到对象!

 The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error. 

 If you think this is a server error, please contact the webmaster. 
Error 404
localhost
Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7

这是代码

<?php
session_start();
if(isset($_SESSION["authenticated"]))
{
if($_SESSION["authenticated"]==TRUE)
?>
<!DOCTYPE html>
<html>
<head><title>Home</title></head>
<body>
<a href="logout.php">Logout</a>
<?php
if(isset($_GET["engine"]))
{
if($_GET["engine"]=="google")
header("Location:http://www.google.com/search?q=".$_GET["q"]);
elseif($_GET["engine"]=="yahoo")
header("Location:http://search.yahoo.com/search?q=".$_GET["q"]);
if($_GET["engine"]=="bing")
header("Location:http://www.bing.com/search?q=".$_GET["q"]);
}
?>
<form action="fakeSearch.php" method="GET">
<input type="text" name="q" value=""/><br/>
Google <input type="radio" name="engine" value="google"/><br/>
Yahoo <input type="radio" name="engine" value="yahoo"/><br/>
Bing <input type="radio" name="engine" value="bing"/><br/>
<input type="submit"/>
</form>
</body>
</html>
<?php }
else{
header("Location:login.php.");
}?>
4

3 回答 3

0

您在重定向结束时有一个额外的时间。试试这个:

header("Location:login.php");
于 2013-07-11T04:42:18.460 回答
0

在您的表单操作中,您正在使用 fakesearch.php

<form action="fakeSearch.php" method="GET">

但是您正在同一个文件中编写动作编码

if(isset($_GET["engine"]))
{
if($_GET["engine"]=="google")
header("Location:http://www.google.com/search?q=".$_GET["q"]);
elseif($_GET["engine"]=="yahoo")
header("Location:http://search.yahoo.com/search?q=".$_GET["q"]);
if($_GET["engine"]=="bing")
header("Location:http://www.bing.com/search?q=".$_GET["q"]);
}

单击提交按钮后,它将搜索以找到 fakesearch.php 文件

尝试使用“#”或在表单标签的 action 属性中留空。

<?php
session_start();
if(isset($_SESSION["authenticated"]))
{
if($_SESSION["authenticated"]==TRUE)
?>

尝试将此代码放在body标签之后

  if($_SESSION["authenticated"]==TRUE)  {

我认为,缺少开放花括号。(来自@Orangepil 的想法)

一切顺利!

于 2013-07-11T04:40:08.043 回答
0

这可能是“Location:login.php”中“php”之后的尾随句点。

于 2013-07-11T04:40:19.813 回答