2017-05-04 2 views
-2

그래서 웹 사이트와 로그인 시스템을 만들었습니다. 방문 페이지, '새 게시물'페이지 및 로그인 페이지가 있습니다. 로그인하지 않은 경우 사용자가 "새 게시물"페이지에 액세스하는 것을 원하지 않습니다.하지만 세션없이이 페이지에 액세스하려고하면/login /을 사용하여 로그인 페이지로 리디렉션됩니다. 새로운. 주소 표시 줄에? new로 로그인하면 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..."; 
} 

: I가 로그인하지 않은 경우 사용자가 "새 게시물"페이지에 액세스하지 않으

<?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 또는 false 또는 null 인 경우 false가됩니다. 그것까지 너. 추천을 반영하도록 답변을 업데이트했습니다. – noyanc

+0

한번 더 고맙습니다. –