2015-12-30 2 views
1

Я новичок в PHP. Так что я сделал LoginForm на мой сайт и где у меня возникают проблемы, скрывающую форму после входа пользователя в систему .. Я хочу, чтобы исчезнуть после входа пользователя в Устпешно. Мой код заключается в следующем,Как скрыть форму для входа после входа в систему

<?php 
    include "connect.php"; 
    $_SESSION['backurl'] = basename($_SERVER['PHP_SELF']); 
?> 

<div class = "loginform"> 
      <form name = "login" action = "login.php" method = "post" accept-charset = "utf-8"> 
       <?php 
        echo $_SESSION['username']; 
        //IF LOGADO TIRAR FORM. 
       ?> 
       <ul> 
        <li><label for = "usermail" class = "letralogin" >Email</label> 
        <input type = "email" name = "usermail" placeholder = "[email protected]" required></li> 
        <p> 
        <li><label for = "password" class = "letralogin">Password</label> 
        <input type = "password" name = "password" placeholder = "password" required></li> 
        <p>     
        <input type = "submit" name = "login" value = "Login"></li> 
       </ul>     
      </form> 
      </div> 

      <div class = "divreg"> 
       <input type = "button" onclick = "location.href = 'registo.php';" value = "Registo" class = "buttreg"/> 
      </div> 

Это мой код на login.php,

<?php 
    include "connect.php"; 
    if(isset($_POST['login'])) 
    { 
     $username = $_POST['usermail']; 
     $password = sha1($_POST['password']); 
     $sql = "select * from utilizador where email = '$username' and password = '$password'"; 
     $result = mysqli_query($conn, $sql); 
     if (mysqli_num_rows($result) > 0) 
     { 
      echo 'OK'; 
      $_SESSION['username'] = $username; 
      header('Location: ' . $_SESSION['backurl']); 
     } 
     else 
     { 
      echo 'wrong password'; 
      header('Location: ' . $_SESSION['backurl']); 
     } 
    } 
    else 
    { 
     header('Location: inicio.php'); 
    } 
?> 
+0

Что вы сохранили, что означает, что пользователь вошел в систему? Просто переменная сеанса имени пользователя? – bhooks

+0

Где ваша условная проверка, если пользователь вошел в систему? – chris85

+0

Я отредактировал сообщение, надеюсь, что поможет .. – Reavstone

ответ

2

Вы можете проверить сессию в файле входа в верхней части:

include "connect.php"; 

session_start(); 

    $_SESSION['backurl'] = basename($_SERVER['PHP_SELF']); 

if(isset($_SESSION['username']) && !empty($_SESSION['username'])) { 
     header('Location: ' . $_SESSION['backurl']); 
} 

Если у вас есть как отдельные файлы, чем вам нужно использовать функцию session_start в обоих файлах.

+0

Не работает .... – Reavstone

+1

@reavstone answer update u нужно запустить функцию сессии сверху тоже – devpro

+0

Спасибо за терпение, но он по-прежнему не работает:/ – Reavstone

1

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

if (!isset($_SESSION['username'])) { 
?> 
HTML FORM CODE GOES HERE 
<?php 
} 
?> 

Что это делает чек, если у вас есть набор имя пользователя, и если вы не будет отображать HTML для формы входа в систему, если вы поместите его между РНР тегами. Кроме того, вы можете поместить немного JavaScript, который скрывает ваш div формы для входа, который также удалит форму входа на странице.

+0

Не работает, спасибо за вашу помощь, Я отредактировал сообщение, если можно, проверьте его. – Reavstone

+0

* «Это означает, что у вас установлено имя пользователя» * - 'if (! Isset ($ _ SESSION ['username']))' '' '' 'оператор' NOT'. OP хочет проверить, установлен ли он, и скрыть форму, если она «установлена». –

0

Вы должны проверить, что ваш сеанс пуст или нет. Как это:

session_start(); 
if(!empty($_SESSION['username']) { 
     ?> 
     <!--your login form--> 
     <?php 
} else { 
     ?> 
     main page. 
     <?php 
} 

это для ситуации, что вы хотите, когда пользователь не вошел ни в странице будет показано, кроме него Вход части. Или, если вы хотите просто скрыть форму входа после входа в систему, он будет выглядеть следующим образом:

session_start(); 
if(empty($_SESSION['username']) { 
     ?> 
     <!--your login form--> 
     <?php 
} 
?> 
<!--main part details. --> 
+0

Я уже знаю, когда пользователь входит в систему или нет, этот кусок кода: повторяет имя пользователя, поэтому я знаю, зарегистрирован он или нет. – Reavstone

+0

@Reavstone см. Правки. Я думаю, это должно сработать. –

+0

Не работает помощник, он просто скрывает регистрационную форму от начала, а это значит, что пользователь даже не может войти в систему, все прошло. – Reavstone

1

Предисловие:

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

Либо вы эхо ИЛИ header; вы не можете иметь оба, а не то, как вы их используете сейчас.

Вот основной метод и как я уже говорил в комментариях, назначить переменную в форму кода и заключены в кавычки.

Вы можете опираться на следующий скелет/базовую модель, а затем взять ее оттуда.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

session_start(); 

$_SESSION['user'] = "John"; 
?> 

<!DOCTYPE html> 
    <head><title></title></head> 
    <body> 

<?php 


$form = ' 
      <form name = "login" action = "login.php" method = "post" accept-charset = "utf-8"> 

       <ul> 
        <li><label for = "usermail" class = "letralogin" >Email</label> 
        <input type = "email" name = "usermail" placeholder = "[email protected]" required></li> 
        <p> 
        <li><label for = "password" class = "letralogin">Password</label> 
        <input type = "password" name = "password" placeholder = "password" required></li> 
        <p>     
        <input type = "submit" name = "login" value = "Login"></li> 
       </ul>     
      </form> 

'; 


if (isset($_SESSION['user']) && $_SESSION['user'] == 'John') { 

    echo "Welcome " . $_SESSION['user']; 

    } 

    else{ 

    echo $form; 

    } 

?> 

    </body> 
</html> 
+0

кажется, что я написал это зря. –