2017-04-01 127 views
-1

我無法在所有我在網站登錄後有頁面來顯示我的名字後面顯示名稱:如何在所有其他網頁登錄PHP不僅主頁

AuthentificationController.php

public function Connex($db,$login,$mdp) 
{ 

$requser = $db->prepare("SELECT * FROM users WHERE login = ? AND motdepasse 
= ?"); 
$requser->execute(array($login,$mdp)); 
$userexist = $requser->rowCount(); 
if($userexist == 1) 
{ 
$userinfo = $requser->fetch(); 
$_SESSION['login'] = $userinfo['login']; 
$_SESSION['motdepasse'] = $userinfo['motdepasse']; 
if($userinfo['role']=="admin") 
{ 
session_start(); 
header("Location:/ProjetWeb2A1 - Copie/account.php?id=".$_SESSION['login']); 
} 

else if($userinfo['role']=="client") 
{ 
session_start(); 

header("Location:/ProjetWeb2A1 - Copie/accueil.php?id=".$_SESSION['login']); 
} 
} 

Homepage.php

<div class="header"> 
     <div class="header-left"> 
      <ul> 
       <li><a href="account.php">Inscription</a></li> 
       <li class="login"> 
        <div id="loginContainer"><a id="loginButton"><span>Se Connecter</span></a> 
         <div id="loginBox" style="display: none;">     
          <form id="loginForm" method="POST" action="\ProjetWeb2A1 - Copie\controllers\Authentification_controller.php"> 
             <label>Login</label> 
             <input type="text" name="login" id="email" > 
             <label for="password">Mot de passe</label> 
             <input type="password" name="password" id="password"> 
            <input type="submit" id="login" value="Connexion" name="xxl1"> 
            <label for="checkbox"><input type="checkbox" id="checkbox"> <i>Rester Connecté</i></label> 
           <span><a href="#">Mot de passe oublié?</a></span> 
          </form> 
         </div> 
        </div> 
       </li> 
      </ul> 
     </div> 

如果有人能回答我什麼,我需要做的改變題刻和Se

連接器與我在我所有的其他頁面請

+1

商店名稱在'session'變量中。 – chris85

+0

...但不要在會話變量中存儲密碼;那裏有一個「中間人」,只是在等待。 –

+0

你也在使用不安全的代碼;不要等到你被黑客入侵。這是關於純文本密碼的。 –

回答

0

你可以這樣說:

添加一個PHP文件(的functions.php在這個例子中)與此內容

<?php 
    function logged_in() { 
     if (isset($_SESSION['login'])) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

    function redirect_to ($url) { 
     header("Location: {$url}"); 
    } 
?> 

然後,在你Homepage.php,導入保存的文件,並檢查用戶是否連接這樣

require_once("functions.php"); 
<div class="header-left"> 
     <?php if (logged_in() == false) { ?> 
     <ul> 
      <li><a href="account.php">Inscription</a></li> 
      <li class="login"> 
       <div id="loginContainer"><a id="loginButton"><span>Se Connecter</span></a> 
        <div id="loginBox" style="display: none;">     
         <form id="loginForm" method="POST" action="\ProjetWeb2A1 - Copie\controllers\Authentification_controller.php"> 
            <label>Login</label> 
            <input type="text" name="login" id="email" > 
            <label for="password">Mot de passe</label> 
            <input type="password" name="password" id="password"> 
           <input type="submit" id="login" value="Connexion" name="xxl1"> 
           <label for="checkbox"><input type="checkbox" id="checkbox"> <i>Rester Connecté</i></label> 
          <span><a href="#">Mot de passe oublié?</a></span> 
         </form> 
        </div> 
       </div> 
      </li> 
     </ul> 
     <?php } else { $name = $_SESSION['name']; ?> 
      <h1> Hello <?=$name?> </h1> 
     <?php } ?> 
    </div> 

您應該保存$_SESSION['name']在AuthentificationController.php

+0

我試過你的例子和它確實有工作,但他沒有認識到$ name = $ _SESSION ['name']中的$ _SESSION ['name'],但是當我手動將它工作時,其他Div不顯示,並且它向我展示了Hello Slim你知道問題在哪裏,他爲什麼不知道第二個$ _SESSION?在$ _SESSION ['login'] = $ userinfo ['login'];下添加AuthentificationController.php中的 –

+0

;此行 $ _SESSION ['name'] = $ userinfo ['name']; 字段'名稱'應該存在於您的'用戶'表 – Zakaria

+1

這是多恩:D感謝很多傢伙的幫助我apreciate! –

0

只要您使用$ _SESSION,並希望填充它的用戶名,與開始的每一頁:

<?php 
session_start(); 
$login = $_SESSION['login']; 
echo"Welcome $login"; 
?> 

簡單的代碼示例,只給你一個提示......那麼,做任何你需要:檢查它,保護它......

+0

和因爲你說我怎麼可以把這個登錄是我的用戶名,而不是Se連接器和銘文的div我確定我得到了我的意思^^ –

+0

作爲@Fred -ii早些時候提到它,你有一個非常不安全的代碼!請閱讀關於準備好的語句,以便在繼續之前切換到此處,並編寫過時的/錯誤的東西...然後,在每個頁面的頂部檢查$ _SESSION值,然後,如果用戶未登錄,則顯示「註冊/登錄「表格,否則,做任何匹配您的需求的東西... – OldPadawan

+0

所以表單的行動我用Javascript做它? –