2013-12-06 3 views
-2

Полное раскрытие: Это домашнее задание.Вход в систему с PHP

Я бы не привел это здесь, но я действительно понятия не имею, что происходит, сообщения об ошибках сервера, которые я использую, воспитывают nada, и я не получаю абсолютно никакого вывода, что из сценария. Я знаю, что это не так, как можно было бы идеально сделать такую ​​операцию.

Форма

<div class="jumbotron text-center"> 
    <img class="featuredImg" id="logo" src="Images/ZombieBitLogo.png"> 
    <hr> 
    <form id="form-signin" class="form-signin" action="login.php" method="POST"> 
    <h2 class="form-signin-heading">Come on in</h2> 
    <input type="text" class="form-control" placeholder="Username" name="user" required="" autofocus=""> 
    <input type="password" class="form-control" placeholder="Password" name="pass" required=""> 
    <button id="signin" class="btn btn-lg btn-success btn-block" type="submit" name="action" value="login">Sign in</button> 
    </form> 

    <form class="form-signin" action="login.php" method="GET"> 
    <button id="signout" class="btn btn-lg btn-success btn-block" type="submit" name="action" value="logout">Sign out</button> 
    </form> 
</div> 

РНР

<?php 
echo("hello"); 
if(!session_start()){ 
    echo("Error 312: Zombie chewed through a cable."); 
    exit; 
}//endif 

    $user = empty($_POST[ "user" ]) ? '' : $_POST[ "user" ]; 
    $pass = empty($_POST[ "pass" ]) ? '' : $_POST[ "pass" ]; 

    echo($user); 
    echo($pass); 

$loggedIn = empty($_SESSION[ "loggedin" ]) ? false : $_SESSION[ "loggedin" ]; 

if($loggedIn){ 
    header("Location: order.php"); 
    exit; 
}//endif 

$action = empty($_POST[ "action" ]) ? '' : $_POST[ "action" ]; 

if($action == "login"){ 
    handle_login(); 
}else{ 
    login_form(); 
}//endel 

function handle_login(){ 
    $user = empty($_POST[ "user" ]) ? '' : $_POST[ "user" ]; 
    $pass = empty($_POST[ "pass" ]) ? '' : $_POST[ "pass" ]; 

    if($user == "test" && $pass == "pass"){ 
     $_SESSION[ "loggedin" ] = $username; 
     header("Location: order.php"); 
     exit; 
    }else{ 
     header("Location: log.html"); 
     require "log.html"; 
    }//endel   
}//endfn 

function login_form(){ 
    $user = ""; 
    $error = ""; 
    require "log.html"; 
}//endfn 
?> 

В вторит по пути просто чтобы увидеть значения, ни один из них не печатать на моем конце.

Редактировать: Теперь я вижу, что это было довольно плохое место, чтобы опубликовать этот и плохой вопрос.

+2

Для начала не должно быть * output * (т.е. 'echo') перед' session_start() ' – Phil

+0

Является ли частью php-кода файла с именем login.php в том же каталоге, что и форма? Тот же файл будет работать тоже –

+1

Кроме того, ваш 'require' после' header' не будет ничего хорошего делать. Всегда 'exit' после заголовка * Location * – Phil

ответ

1

Довольно трудно помочь коду, поскольку он имеет много проблем, но это может дать вам представление о том, если вы смотрите на это написано более чисто

<?php 

session_start(); 

if(!empty($_POST)) 
{ 
    if(!empty($_POST['user']) && !empty($_POST['pass'])) 
    { 
     if($_POST['user'] == 'user' && $_POST['pass'] == 'pass') 
     { 
      $_SESSION[ "loggedin" ] = $_POST['user']; 
      header("Location: order.php"); 
      exit;  
     } 
     else 
     { 
      echo 'Oops!'; // better to place in variable and set in desired location 
     } 
    } 
?> 
HTML STUFF 

THE FORM MUST BE "POST" AND NOT "GET" 

<input id="signin" class="btn btn-lg btn-success btn-block" type="submit" name="action" value="Sign in" /> 



} 
0

Вы не можете использовать $ _POST суперглобальные с запросом GET ,

Атрибут метода формы задан как «GET», а ваш PHP-документ использует супергруппу $ _POST. Это не сработает.

Измените свой атрибут метода формы.

<form class="form-signin" action="login.php" method="POST"> 

Кроме того, НИКОГДА НИКОГДА НИКОГДА НЕ ПОЛУЧИТЕ запрос GET для формы входа.

Надеюсь, что помогает.

+0

Это хороший момент, но первая кнопка отправки находится в первой форме, которая является POST. – Jerrod

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