2016-05-25 8 views
0

私はtoeflテストをしたいと思います。ログインボタンが表示されます。誰かがログインすると、ログインボタンがログアウトボタンになります。ログインするとログインボタンは変更されませんでした。 (私はlib_function.phpでこの機能を保存)、ログイン状態を確認するために私にPHPのセッションでログイン状態を確認する関数を作成します

機能を助けてください:

<?php session_start(); ?> 

<?php 
function check_login(){ 
    $hasil = 0; 

    if (isset($_SESSION['email'])) { 
    $mail = $_SESSION['email']; 
    } 
    if (isset($_SESSION['pass'])) { 
    $pass = $_SESSION['pass']; 
    } 

    if (!empty($mail) and !empty($pass)){ 
     $hasil = 1; 
    } 

    return $hasil; 
    } 
?> 

のindex.php:

<?php session_start(); 
require_once("connection.php"); 
?> 
<?php include("lib_function.php"); ?> 

<--header--> 

    <?php 
      $check = check_login(); 

      if ($check == 1){ 
       echo "<a href=\"login.php\">Login</a> <strong class=\"hover\">"; 
      }else{ 
       echo "<a href=\"logout.php\">Logout</a> <strong class=\"hover\">"; 
      } 
      ?> 

これは私のログインプロセスである:

<?php 
session_start(); 

    require_once("connection.php"); 

    $email = $_POST['email']; 
    $password = $_POST['password']; 

    $cekuser = mysql_query("SELECT * FROM user WHERE email = '$email'"); 
    $jumlah = mysql_num_rows($cekuser); 
    $hasil = mysql_fetch_array($cekuser); 

    if($jumlah == 0) { 
     echo "<script>alert('Email has registered!'); window.location = 'index.php'</script>"; 
    } else { 
     if($pass > $hasil['password']) { 
     echo "<script>alert('Wrong password!'); window.location = 'index.php'</script>"; 
     } else { 
     $_SESSION['email'] = $hasil['email']; 
     header('location:index.php'); 
     } 
    } 
?> 
+0

は 'タグの前に' lib_function.php'ページのトップに ')ログインページコード –

+0

は、あなたが('にsession_startを持っていることを確認し表示してくださいすることができます ' – Hosseini

+0

@Hosseiniなぜですか? session_start()はindex.phpの最上部で呼び出され、「this is my login process」と記述されたファイルが呼び出されます。 – VolkerK

答えて

-1

これを試す:

function login($email) { 
    $_SESSION['email'] = $email; 
} 

function is_logged() { 
    return isset($_SESSION['email']); 
} 

function logout() { 
    session_destroy(); 
} 
0

check_login機能に$_SESSION['pass']が設定されているかどうかをチェックしますが、ログイン処理中は設定しないでください。

$_SESSION['pass']を設定するか、またはand !empty($pass)check_login()から削除します。

0

セッションが開始する前に、セッションが既にアクティブかどうかを常に確認してください。 check_login()関数内の$ mail & $ pass変数に、NULLと言うデフォルト値を代入することもできます。なぜなら、$ mailと$ passが空であるかどうかチェックしていたからです。もしそれらが全くセットされていなかったらどうですか?この場合、これらの変数がまったく存在しなかったでしょう...

<?php 
    // FILE:: lib_function.php 
    function check_login(){ 
     $hasil = 0; 
     // GET THE $mail & $pass FROM SESSION; ASSIGNING A DEFAULT NULL 
     // TO EACH OF THEM IF THEY ARE NOT YET SET... 
     $mail = isset($_SESSION['email']) ? $_SESSION['email'] : null; 
     $pass = isset($_SESSION['pass']) ? $_SESSION['pass']  : null; 

     if (!empty($mail) and !empty($pass)){ 
      $hasil = 1; 
     } 
     return $hasil; 
    } 



    // FILE:: index.php 
    // START SESSION ONLY IF IT IS NOT ALREADY ACTIVE: 
    if (session_status() == PHP_SESSION_NONE || session_id() == '') { 
     session_start(); 
    } 

    require_once("connection.php"); 
    include("lib_function.php"); 

    // HEADER HERE 

    $check = check_login(); 

    if ($check == 1){ 
     echo "<a href=\"login.php\">Login</a> <strong class=\"hover\">"; 
    }else{ 
     echo "<a href=\"logout.php\">Logout</a> <strong class=\"hover\">"; 
    } 

?> 
関連する問題