2013-09-02 7 views
1

У меня есть форма входа на веб-страницу, и я хочу, чтобы пользователи могли войти в систему или зарегистрироваться. В верхней части страницы у меня есть PHP-скрипт с условным тестированием, для которого была нажата кнопка отправки. Часть входа работает нормально. Раздел «Регистр» работает (что означает, что он попадает в оператор if), но он не перенаправляется на мой сайт register.php. Есть предположения?PHP Form с 2 кнопками отправки, условными работами, но без перенаправления заголовков

Я попытался изменить порядок инструкций if/elseif, но безрезультатно. Я не получаю никаких предупреждений из этого скрипта, но он просто перезагружает страницу, а не перенаправляет на register.php.

Чтобы увидеть фактическую веб-страницу, перейдите на страницу here.

<?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'); 

Он должен работать.

Благодаря

+1

Ну пятнистый :) +1 –

+0

Спасибо @ ØHankyPankyØ –

+1

Спасибо Vicky ... всегда может рассчитывать на вас людей, чтобы заставить меня чувствовать себя неполноценным и бесполезным. Это сработало. Я не могу отметить ваш ответ как правильный в течение еще 5 минут, я вернусь и получу его. – Bonedancer

0

Попробуйте это:

if (isset($_POST['register'])) { 
    header("Location:http://www.mynextbit.com/authenticate/register.php"); 
} 

См Reference

0

Может быть, от того, что я вижу из PHP documentation, функция 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; 
} 
?> 
+0

Спасибо, бриошее ... отметил. – Bonedancer