2017-05-04 218 views
-2

所以,我做了一個網站和它的登錄系統。有一個登陸頁面,一個「新帖子」頁面和一個登錄頁面。我不希望用戶在未登錄的情況下訪問「新文章」頁面[已解決],但是,如果他將嘗試在沒有會話的情況下訪問它,它將使用/ login /?將其重定向到登錄頁面。新的。 當他在地址欄中使用?new登錄時,它應該將他重定向到「New post」頁面,如果url只是/ login /,它會將他帶到登陸頁面。 這就是我試圖做的代碼:需要幫助Php isset()

if($count == 1 && $row['userPass']==$password && isset($_POST["new"])) { 
    $_SESSION['user'] = $row['userId']; 
    header('Location:../new'); 
} else if ($count == 1 && $row['userPass']==$password) { 
    $_SESSION['user'] = $row['userId']; 
    header('Location:../'); 
} 
    else { 
    $errMSG = "Incorrect Credentials, Try again..."; 
} 

這就是全碼:

<?php 
ob_start(); 
session_start(); 
require_once 'dbconnect.php'; 

$error = false; 
if(isset($_POST['btn-login'])) { 

    // prevent sql injections/ clear user invalid inputs 
    $email = trim($_POST['email']); 
    $email = strip_tags($email); 
    $email = htmlspecialchars($email); 

    $pass = trim($_POST['pass']); 
    $pass = strip_tags($pass); 
    $pass = htmlspecialchars($pass); 
    // prevent sql injections/clear user invalid inputs 

    if(empty($email)){ 
    $error = true; 
    $emailError = "Please enter your email address."; 
    } else if (!filter_var($email,FILTER_VALIDATE_EMAIL)) { 
    $error = true; 
    $emailError = "Please enter valid email address."; 
    } 

    if(empty($pass)){ 
    $error = true; 
    $passError = "Please enter your password."; 
    } 

    // if there's no error, continue to login 
    if (!$error) { 

    $password = hash('sha256', $pass); // password hashing using SHA256 

    $res=mysql_query("SELECT userId, userName, userPass FROM users WHERE userEmail='$email'"); 
    $row=mysql_fetch_array($res); 
    $count = mysql_num_rows($res); // if uname/pass correct it returns must be 1 row 

    if($count == 1 && $row['userPass']==$password && isset($_POST["new"])) { 
     $_SESSION['user'] = $row['userId']; 
     header('Location:../new'); 
} else if ($count == 1 && $row['userPass']==$password) { 
      $_SESSION['user'] = $row['userId']; 
     header('Location:../'); 
    } 
else { 
     $errMSG = "Incorrect Credentials, Try again..."; 
} 

} 
} 
?> 
+0

與此代碼會發生什麼?我在這裏看不到任何關於URL的信息。 – chris85

+0

網址是http://world-sports.000webhostapp.com –

+0

它總是將我重定向到登錄頁 –

回答

-1

我不希望用戶如果沒有登錄訪問「新帖」頁[這是解決]

我假設你已經通過做類似或類似的事情來解決這個問題。

if (!isset($_SESSION['user'])) { 
    header('Location:login.php'); 
} 

我建議你改變標題功能。可以說,新的後頁面被稱爲new.php

header('Location:login.php?redirectto=new.php'); 

然後在您的登錄頁面代碼:

if($count == 1 && $row['userPass']==$password && !empty($_GET["redirectto"])) { 
    $_SESSION['user'] = $row['userId']; 
    header('Location:'.$_GET["redirectto"]); 
} else if ($count == 1 && $row['userPass']==$password) { 
    $_SESSION['user'] = $row['userId']; 
    header('Location:../'); 
} 
    else { 
    $errMSG = "Incorrect Credentials, Try again..."; 
} 
+0

謝謝!這工作! –

+0

您的歡迎。我建議你在這種情況下將'isset'改爲'empty'。空如isset,但略有不同。如果該值爲空或0或false或null,則該值爲false。隨你便。我已更新我的回答以反映我的建議。 – noyanc

+0

再一次,謝謝:) –