Форма PHP с 2 кнопками отправки, условными работами, но без перенаправления заголовка
У меня есть форма входа на веб-странице, и я хочу, чтобы пользователи могли войти или зарегистрироваться. В верхней части страницы у меня есть PHP-скрипт с условным тестированием, для которого была нажата кнопка отправки. Входная часть работает нормально. Часть "Register" работает (то есть попадает в оператор if), но не перенаправляет на мой сайт register.php. Какие-нибудь мысли?
Я попытался изменить порядок операторов if/elseif, но безрезультатно. Я не получаю предупреждений от этого скрипта, но он просто перезагружает страницу, а не перенаправляет ее на register.php.
Чтобы увидеть актуальную веб-страницу, перейдите сюда.
<?php
$error = '';
session_start();
ob_start();
if (isset($_POST['register'])) {
header("http://www.mynextbit.com/authenticate/register.php");
}
elseif (isset($_POST['login'])) {
session_start();
$username = trim($_POST['username']);
$_SESSION['user'] = $username;
$password = trim($_POST['pwd']);
// location to redirect on success
$redirect = 'http://www.mynextbit.com/Pages/newtemplateTEST.php';
require_once('../includes/authenticate_mysqli.inc.php');
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
...
И, ФОРМА HTML...
<?php
if ($error) {
echo "<p>$error</p>";
}
if (!$_SESSION['user']) { ?>
<font color="red"><i><userlogin>Please Log In</userlogin></i></font><br />
<form id="form1" method="post" action="" style="margin-left: 15px">
<label for="username" ><font size="-1">Username:</font></label>
<input type="text" name="username" id="username">
<br />
<label for="pwd"><font size="-1">Password:</font></label>
<input type="password" name="pwd" id="pwd">
<br />
<input name="login" type="submit" id="login" value="Log in" style="display:inline"> or
<input name="register" type="submit" id="register" value="Register" style="display:inline">
</form>
<?php } ?>
3 ответа
Проверьте здесь. http://php.net/manual/en/function.header.php Используйте заголовок с расположением, как это header('Location: http://www.example.com/');
header('Location:http://www.mynextbit.com/authenticate/register.php');
Он должен работать.
Спасибо
Возможно, из того, что я вижу из документации PHP, функция HEADER должна иметь "местоположение", подобное такому?
<?php
header("Location: http://www.example.com/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
Это должно решить твою проблему, я попробовал это, и это фактически перенаправляет:P
Кроме того (не обязательно, но иногда рекомендуется), вы можете использовать HEREDOCS, если вы не хотите иметь слишком много средств открытия и закрытия тегов php.
Пример для вашего кода:
<?php
if ($error) {
echo "<p>$error</p>";
}
if (!$_SESSION['user']) {
echo <<<FORM
<font color="red"><i><userlogin>Please Log In</userlogin></i></font><br />
<form id="form1" method="post" action="" style="margin-left: 15px">
<label for="username" ><font size="-1">Username:</font></label>
<input type="text" name="username" id="username">
<br />
<label for="pwd"><font size="-1">Password:</font></label>
<input type="password" name="pwd" id="pwd">
<br />
<input name="login" type="submit" id="login" value="Log in" style="display:inline"> or
<input name="register" type="submit" id="register" value="Register" style="display:inline">
</form>
FORM;
}
?>
Попробуй это:
if (isset($_POST['register'])) {
header("Location:http://www.mynextbit.com/authenticate/register.php");
}
Смотрите ссылку