>  기사  >  백엔드 개발  >  PHP 사용자는 로그인하지 않으면 페이지에 액세스할 수 없습니다.

PHP 사용자는 로그인하지 않으면 페이지에 액세스할 수 없습니다.

angryTom
angryTom원래의
2019-10-31 09:25:323618검색

PHP 사용자는 로그인하지 않으면 페이지에 액세스할 수 없습니다.

PHP 사용자는 로그인하지 않으면 페이지에 접근할 수 없습니다

로그인하기 전에 어떤 페이지 링크 주소를 입력하든 먼저 로그인하라는 메시지가 표시되며, 모든 페이지에 접근할 수 있습니다. 이러한 기능을 구현하는 방법은 무엇입니까? 세션과 쿠키를 사용하여 이를 달성할 수 있습니다.

1.session

a) login.php

<?php
header("content-type:text/html;charset=utf-8");
if(!isset($_POST[&#39;submit&#39;])){
exit("非法登录");
}
$name=trim($_POST[&#39;username&#39;]);
//echo $name;
$pwd=md5(trim($_POST[&#39;pwd&#39;]));
$pdo=new PDO("mysql:dbname=shixun1;host=127.0.0.1","root","123456");
 
if(preg_match(&#39;/^1[3,5,8]\d{9}$/&#39;,$name)) {
$sql=$pdo->query("select phone,pwd from user where phone=&#39;$name&#39;");
}elseif(preg_match(&#39;/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/&#39;,$name)){
$sql=$pdo->query("select email,pwd from user where email=&#39;$name&#39;");
}else{
$sql=$pdo->query("select name,pwd from user where name=&#39;$name&#39;");
}
//$sql=$pdo->query("select * from user where name=&#39;$name&#39;");
$res=$sql->fetch(PDO::FETCH_ASSOC);
if($res){
if($res[&#39;pwd&#39;]==$pwd){
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211"); 
session_start();
$_SESSION[&#39;username&#39;] = $name;
$_SESSION[&#39;password&#39;] = $pwd;
echo "<script>alert(&#39;登录成功&#39;);location.href=&#39;success.php&#39;</script>";
}else{
echo "<script>alert(&#39;密码错误&#39;);location.href=&#39;login.html&#39;</script>";
}
}else{
echo "<script>alert(&#39;用户名错误&#39;);location.href=&#39;login.html&#39;</script>";
}
?>

b) checklogin.php

<?php
if(!empty($_SESSION[&#39;username&#39;])){
// 不存在session用户id,退出
echo "用户未登录,前往登录页面登录";
header("Location: login.php");
exit;
}
?>

이 파일은 각 페이지 시작 부분에 로드되어야 하므로 반드시 로그인해야 접속할 수 있습니다

2 . Cookie

는 쿠키로 만들어졌습니다. 쿠키 기록이 로그인되어 있으면 점프하지 않고 로그인 인터페이스로 이동합니다.

[이 정보는 다음과 같습니다. 모든 페이지에 포함]

<?php
namespace PenguinStudio/PenguinCode/STDCode;
if($_COOKIE[&#39;login_session&#39;] !== "islogin"){
    header("Location: login.php");
}

[로그인 인터페이스 정보입니다]

<?php
namespace PenguinStudio/PenguinCode/STDCode;
if(.../* 判断登陆正确 */){
    setcookie("login_session","islogin", time()+3600*24);//一天过期的cookie
}
else{
    echo "<script>alert(&#39;wrong&#39;);</script>";
}

PHP 관련 지식을 더 알고 싶으시다면 PHP 중국어 홈페이지를 방문해주세요!

위 내용은 PHP 사용자는 로그인하지 않으면 페이지에 액세스할 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.