ホームページ >バックエンド開発 >PHPの問題 >PHP ユーザーはログインせずにページにアクセスできません

PHP ユーザーはログインせずにページにアクセスできません

angryTom
angryTomオリジナル
2019-10-31 09:25:323653ブラウズ

PHP ユーザーはログインせずにページにアクセスできません

PHP ユーザーはログインせずにページにアクセスできません

ログイン前にどのページのリンク アドレスを入力しても, 最初にログインしてください。ログインに成功すると、すべてのページにアクセスできます。このような機能を実装するにはどうすればよいですか? セッションと Cookie を使用して実現できます。

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

は Cookie で作成されます。 Cookie レコードが次の場合は 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 中国語 Web サイトをご覧ください。

以上がPHP ユーザーはログインせずにページにアクセスできませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。