2016-09-30 2 views
-1

У меня есть основная форма входа на мою страницу в блоге, и когда я ввожу правильное имя пользователя и пароль, он говорит, что имя пользователя + пароль верное, но я не перенаправлен на страницу index1.php ,PHP Отправить форму не работает правильно

Вот мой код:

<?php 
    require_once('header.php'); 
    require_once('config.php'); 

$db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 

    //check to see if form has been submitted 
    if (isset($_POST['submit'])) { 
    if ($_POST['username'] == 'bruce' && ($_POST['password'] == 'wayne')) { 
     echo 'Correct username and password.'; 
    } 
    else { 
     echo 'Incorrect username or password. Please try again.'; 
    } 

    $result = mysqli_query($db, $sql); 
    $numrows = mysqli_num_rows($result); 

    if($numrows == 1) { 
     $row = mysqli_fetch_array($result, MYSQLI_ASSOC); 
     $_SESSION['USERNAME'] = $row['username']; 
     $_SESSION['USERID'] = $row['id']; 

     header("Location:"."index1.php"); 
    } 
    else { 
     header("Location"."login.php?error=1"); 
    } 
} 

    else { 
     if(isset($_GET['error'])) { 
      echo "Incorrect login, please try again!"; 
     } 
    } 
?> 

<form action="<?php echo $_SERVER['index1.php'] ?>" method="post"> 
<table id='login'> 
<tr> 
    <td>Username</td> 
    <td><input type="text" name="username"></td> 
</tr> 
<tr> 
    <td>Password</td> 
    <td><input type="password" name="password"></td> 
</tr> 
<tr> 
    <td></td> 
    <td><input type="submit" name="submit" value="Login!"></td> 
</tr> 
</table> 
</form> 

index1.php ниже!

<?php 
    require("header.php"); 

    $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 

    $sql = "SELECT entries.*, categories.cat FROM entries, categories 
     WHERE entries.cat_id = categories.id 
     ORDER BY dateposted DESC 
     LIMIT 1;"; 

    $result = mysqli_query($db,$sql); 
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC); 

    echo "<h2><a href= 'viewentry.php?id=" . $row['id'] . "'>" . $row['subject']. "</a></h2><br />"; 
    echo "<i>In <a href='viewcat.php?id=" . $row['cat_id'] . "'>" . $row['cat'] ."</a> - Posted on " . 
      date("D jS F Y g.iA", strtotime($row['dateposted'])) ."</i>"; 
    echo "<p>"; 
    echo nl2br($row['body']); 
    echo "</p>"; 

    require("footer.php"); 

?> 
+0

где '$ db' определяется? – Ghost

+1

Где ваш оператор '$ sql', я его не вижу. – Franco

+0

Вы получаете ошибку, например, «уже отправленные заголовки»? –

ответ

0

первой очереди вам нужно использовать session_start(); перед использованием сеанса в PHP, если вы didnot тогда $ _SESSION становится нормальным массивом, и больше не будет помнить.

+0

Вы можете показать код index1.php –

+0

дайте мне знать ... работает ли это для вас или нет –

0

Вы не можете эха перед перенаправлением, если не используете буферизацию вывода. Я прокомментировал ваше эхо.

Я использую это все время. вы должны вызвать exit после перенаправления.

/** 
* This is designed to redirect using a quick, easy function. 
*/ 
function gfRedir($_NewPath){ 
    header('Location: '.$_NewPath); 
    exit(); 
} 

Вы бы использовать его как:

<?php 
    require_once('header.php'); 
    require_once('config.php'); 

$db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 

    //check to see if form has been submitted 
    if (isset($_POST['submit'])) { 
    if ($_POST['username'] == 'bruce' && ($_POST['password'] == 'wayne')) { 
     //you cannot echo before a redirect unless you are using output buffering. 
     //echo 'Correct username and password.'; 
    } 
    else { 
     //you cannot echo before a redirect unless you are using output buffering. 
     //echo 'Incorrect username or password. Please try again.'; 
    } 

    //where is this $sql at that you are passing into the below function? 

    $result = mysqli_query($db, $sql); 
    $numrows = mysqli_num_rows($result); 

    if($numrows == 1) { 
     $row = mysqli_fetch_array($result, MYSQLI_ASSOC); 
     $_SESSION['USERNAME'] = $row['username']; 
     $_SESSION['USERID'] = $row['id']; 

     gfRedir('index2.php'); 
    } 
    else { 

     gfRedir('login.php?error=1'); 
    } 
    } 

    else { 
     if(isset($_GET['error'])) { 
      echo "Incorrect login, please try again!"; 
     } 
    } 


    function gfRedir($_NewPath){ 
     header('Location: '.$_NewPath); 
     exit(); 
    } 
?> 

<form action="<?php echo $_SERVER['index1.php'] ?>" method="post"> 
<table id='login'> 
<tr> 
    <td>Username</td> 
    <td><input type="text" name="username"></td> 
</tr> 
<tr> 
    <td>Password</td> 
    <td><input type="password" name="password"></td> 
</tr> 
<tr> 
    <td></td> 
    <td><input type="submit" name="submit" value="Login!"></td> 
</tr> 
</table> 
</form> 
+0

попробовал это, теперь он говорит неправильный пароль или имя пользователя – chris

+0

Нет, это всего лишь фрагмент, вам нужно вставить это внутри ваш текущий код. –

+0

Дайте мне знать, если вы получите сообщение об ошибке «Заголовки уже отправлены» –

-1

Пожалуйста, попробуйте использовать этот синтаксис для перенаправления.

header("Location:index1.php"); 
exit(); 

Спасибо

Смежные вопросы