2013-07-11 3 views
2

Мой код, который не включает в себя любую базу данных или сеанс дает отличные результатыПочему перенаправление на google дает странный результат?

<!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."); 
}?> 
+2

'если ($ _ SESSION [ "заверенного"] == TRUE)' отсутствует фигурные скобки – Orangepill

+0

возможно, что линия может быть отклонил и первый тест должен быть 'если (Исеть ($ _ SESSION ["authenticated"]) && $ _SESSION ["authenticated"] == TRUE) ' – Orangepill

+0

Я не пропустил фигурные скобки. В конце концов, я хочу, чтобы код HTML выполнялся, только если это условие выполняется. И я бы получил синтаксическую ошибку, если бы допустил ошибку, которой я не занимаюсь. – Bhushan

ответ

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"]); 
} 

после нажатия подменю t, он будет искать файл fakesearch.php

Попробуйте использовать «#» или сделать пустой атрибут действия в теге формы.

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

Попробуйте поместить этот код после тега тела

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

Я думаю, открытая фигурная скобка отсутствует. (Идея из @ Orangepil)

Все самое лучшее!

+0

это имя файла fakeSearch.php – Bhushan

+0

Это PHP, а не JS, что он будет обрабатываться только там. – kushpf

0

Это, вероятно, конечный период после «php» в «Location: login.php».

+0

Спасибо за исправление этого Но он по-прежнему не исправляет мою проблему Когда я отправляю правильное имя пользователя и пароль, условие которых даже не выполняется, так что не может создать проблему – Bhushan

0

У вас есть дополнительный период в конце вашей переадресации. Попробуйте вместо этого:

header("Location:login.php"); 
Смежные вопросы