2017-05-04 6 views
-2

私はウェブサイトとそのログインシステムを作っています。ランディングページ、「新しい投稿」ページ、およびログインページがあります。ログインしていなければユーザーは「新しい投稿」ページにアクセスする必要はありませんが、セッションがなくてもアクセスしようとすると、ログインページに/ login /?新しい。 アドレスバーに?newでログインすると、URLが/ login /だけの場合は「New post」ページにリダイレクトされ、着陸に至ります。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

:新しい投稿ページがログインページのコードに続いて

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

new.phpと呼ばれているとしましょうか?私はここのURLについて何も見ません。 – chris85

+0

URLはhttp://world-sports.000webhostapp.com –

+0

です。常に私をリンク先ページにリダイレクトしています –

答えて

-1

私はそれだ[ユーザーは「新しいポスト」ページにアクセスしたくない、私が実行しようとしましたコードです 解決済み]

私はこれを似たようなやり方で解決したと仮定します。

if (!isset($_SESSION['user'])) { 
    header('Location:login.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'に変更することをお勧めします。 emptyはissetと似ていますが、少し異なります。値が空であるか、0または偽またはnullの場合はfalseになります。それはあなた次第です。私は私の推薦を反映するために私の答えを更新しました。 – noyanc

+0

もう一度、ありがとう:) –