2012-01-17 3 views
1

У меня есть форма, указывающая на php-файл. Все файлы php перенаправляют пользователя на конкретный стр. Я не могу заставить его работать, и им не уверен, что я делаю неправильно.Я не могу получить заголовок («Местоположение: http://www.google.com/») для работы :(

<form method="post" action="processRegister.php"> 
    User Name: <input type="text" name="userName" maxlength="32"><br> 
    Password: <input type="password" name="userPassword" maxlength="32"><br> 
    <input type="submit"> 
</form> 

processRegister.php

<?php 
// processRegister.php 
////////////////////// 
header("Location: http://www.google.com/"); 
/* 
// First include the class definition 
include('UserClass.php'); 

// Next, create an instance of the class 
$newUser = new User; 

// Call the registerUser() method, passing in the required variables 
if ($newUser->registerUser($userName, $userPassword)) { 
    header('Location: www.google.com'); 
} 
else { 
    header('Location: www.yahoo.com'); 
} 
*/ 
?> 
+1

Какая ошибка? Были ли какие-либо данные отправлены перед командой header()? –

+2

Попробуйте изменить ' ceejayoz

+0

Является ли это опечаткой или проблемой? Ваша форма использует 'process_register.php', но имя файла, которое вы дали, это' processRegister.php'. – ughoavgfhw

ответ

4

используйте exit вызова после использования header() изменить местоположение. это позволит не только предотвращает ненужную обработку, но также предотвращает потенциальные дыры в безопасности, как если бы вы не выходили после c висячие места, страница обрабатывается и отправляется в браузер в обычном режиме. В случаях, когда вы, например, перенаправляете неавторизованных пользователей на страницу входа в систему, чувствительный контент по-прежнему будет отправлен им, и они могут его захватить.

0

Ах, я прочитал ваше сообщение слишком быстро и не понял, что это было на двух разных страницах. Мое исправление не собирается исправлять вас.

Попробуйте это, но флаг после заголовка. Таким образом, вместо того, чтобы просто

header("Location: http://www.google.com/"); 

делают

header("Location: http://www.google.com/"); 
echo "Flag1"; 

Если даже не печатать «flag1,» чем мы будем иметь лучшее понимание того, почему он не работает.

+0

Почему это очевидно, что есть выход? – user1082764

+0

он даже не печатает флаг 1. Я думаю, что это что-то вне моего короткого сценария, потому что я тестирую его на тестовом сайте, который у меня есть, и он работает отлично. Я не могу найти проблему tho – user1082764

+0

Возможно, поставив [echo "flag0";] перед тем, как заголовок скажет вам, даже если он попадает на эту страницу. Если он даже не печатает «flag0», вы знаете, что на предыдущей странице что-то не так. Можете ли вы загрузить всю страницу на PasteBin, которая ссылается на processRegister.php? Я просто скопировал оба кода дословно, запустил его на моем сервере, и он работал как шарм. Я уверен, что что-то не так со страницей, содержащей форму, которая препятствует работе заголовка. –

0

использование exit() после header и на самом верху страницы (в PHP) Райт ob_start(); Наиболее важным является о ob_start! это означает, где начинается код.

<?php 
ob_start(); 
// processRegister.php 
////////////////////// 
header("Location: http://www.google.com/"); 
/* 
// First include the class definition 
include('UserClass.php'); 

// Next, create an instance of the class 
$newUser = new User; 

// Call the registerUser() method, passing in the required variables 
if ($newUser->registerUser($userName, $userPassword)) { 
    header('Location: www.google.com'); 
} 
else { 
    header('Location: www.yahoo.com'); 
} 
*/ 
exit(); 
?> 
0

У вас есть исходный файл с хорошим кодированием? Если это всего лишь UTF-8, вам необходимо изменить его на UTF-8 without BOM, поскольку спецификация может вызвать проблему.