我刚刚创建完整的登录并在PHP中注册了systsem,但是我的问题是我还没有使用过任何会话。我在PHP中是一个新手,我以前从未使用过会话。我想要做的是,在用户注册并填写登录表单后,他们仍然保持在同一页面上。因此,如果会话是logged_in,其他部分将会是其他部分(用户未登录,因此显示登录表单),将会有一部分会话。任何人都可以告诉我如何开始?在PHP登录脚本中使用会话和会话变量
回答
希望这有助于:)
开始的会议,你需要在页面顶部的说,这还是你打的会话代码之前
session_start();
把用户ID在会话跟踪谁是登录
$_SESSION['user'] = $user_id;
检查是否有人在
if (isset($_SESSION['user'])) {
// logged in
} else {
// not logged in
}
登录
查找登录的用户ID
$_SESSION['user']
所以你的页面上
<?php
session_start();
if (isset($_SESSION['user'])) {
?>
logged in HTML and code here
<?php
} else {
?>
Not logged in HTML and code here
<?php
}
好的,简单的,可读的代码。刚刚完美 – IchHabsDrauf 2017-03-04 11:27:50
首先,PHP文件对sessions一些excellent information。其次,您需要一些方法来存储您网站的每个用户(例如数据库)的凭证。不要将密码存储为可读,未加密的纯文本。存储密码时,您应该使用PHP的crypt()
哈希函数。这意味着如果任何凭证被泄露,密码不是随时可用。
大多数登录系统会散列/加密用户输入的密码,然后将结果与相应用户名的存储系统(例如数据库)中的散列进行比较。如果输入密码的散列与存储的散列匹配,则用户输入了正确的密码。
您可以使用会话变量来存储有关用户当前状态的信息 - 即他们是否已登录,如果他们是您还可以存储他们唯一的用户ID或您需要的任何其他信息。
要启动PHP会话,您需要致电session_start()
。同样,要摧毁一个会话,它的数据,你需要调用session_destroy()
(例如,当用户注销):
// Begin the session
session_start();
// Use session variables
$_SESSION['userid'] = $userid;
// E.g. find if the user is logged in
if($_SESSION['userid']) {
// Logged in
}
else {
// Not logged in
}
// Destroy the session
if($log_out)
session_destroy();
我也建议你看看this。在那里创建一个简单的登录系统有一些很好的,容易遵循的信息。
PHP 5.5引入了[密码散列函数](http://php.net/manual/en/ref.password.php)(带有5.3.7兼容性代码),应该用于密码散列生成和验证。这些函数消除了某些程序员在使用'crypt()'或其他PHP通用散列函数时可能产生的安全弱化错误。有关为什么要使用password_hash()而不是crypt()的详细信息,请参阅[rfc:password_hash](https://wiki.php.net/rfc/password_hash) – 2015-05-14 20:25:30
答案底部的链接(this)已损坏现在。你能为这个资源提供永久链接吗? – dmcgill50 2016-01-08 16:10:03
我总是做OOP并使用这个类来维护会话,所以你可以使用函数is_logged_in来检查用户是否登录,如果没有,你做你想做的事。
<?php
class Session
{
private $logged_in=false;
public $user_id;
function __construct() {
session_start();
$this->check_login();
if($this->logged_in) {
// actions to take right away if user is logged in
} else {
// actions to take right away if user is not logged in
}
}
public function is_logged_in() {
return $this->logged_in;
}
public function login($user) {
// database should find user based on username/password
if($user){
$this->user_id = $_SESSION['user_id'] = $user->id;
$this->logged_in = true;
}
}
public function logout() {
unset($_SESSION['user_id']);
unset($this->user_id);
$this->logged_in = false;
}
private function check_login() {
if(isset($_SESSION['user_id'])) {
$this->user_id = $_SESSION['user_id'];
$this->logged_in = true;
} else {
unset($this->user_id);
$this->logged_in = false;
}
}
}
$session = new Session();
?>
谢谢,它是一个很好的开始,但应该扩展你的课堂用户认证与电子邮件;) – 2017-03-23 13:10:15
这里是使用php的最简单的会话代码。 我们正在使用3个文件。
的login.php
<?php session_start(); ?> // session starts with the help of this function
<?php
if(isset($_SESSION['use'])) // Checking whether the session is already there or not if
// true then header redirect it to the home page directly
{
header("Location:home.php");
}
if(isset($_POST['login'])) // it checks whether the user clicked login button or not
{
$user = $_POST['user'];
$pass = $_POST['pass'];
if($user == "Ank" && $pass == "1234") // username is set to "Ank" and Password
{ // is 1234 by default
$_SESSION['use']=$user;
echo '<script type="text/javascript"> window.open("home.php","_self");</script>'; // On Successful Login redirects to home.php
}
else
{
echo "invalid UserName or Password";
}
}
?>
<html>
<head>
<title> Login Page </title>
</head>
<body>
<form action="" method="post">
<table width="200" border="0">
<tr>
<td> UserName</td>
<td> <input type="text" name="user" > </td>
</tr>
<tr>
<td> PassWord </td>
<td><input type="password" name="pass"></td>
</tr>
<tr>
<td> <input type="submit" name="login" value="LOGIN"></td>
<td></td>
</tr>
</table>
</form>
</body>
</html>
home.php
<?php session_start(); ?>
<html>
<head>
<title> Home </title>
</head>
<body>
<?php
if(!isset($_SESSION['use'])) // If session is not set then redirect to Login Page
{
header("Location:Login.php");
}
echo $_SESSION['use'];
echo "Login Success";
echo "<a href='logout.php'> Logout</a> ";
?>
</body>
</html>
logout.php
<?php
session_start();
echo "Logout Successfully ";
session_destroy(); // function that Destroys Session
header("Location: Login.php");
?>
//start use session
$session_start();
extract($_POST);
//extract data from submit post
if(isset($submit))
{
if($user=="user" && $pass=="pass")
{
$_SESSION['user']= $user;
//if correct password and name store in session
}
else {
echo "Invalid user and password";
header("Locatin:form.php");
}
if(isset($_SESSION['user']))
{
//your home page code here
exit;
}
顺便说一句,你想散列和盐密码就此。然后对输入进行散列和加盐以进行比较。 – 2016-12-17 06:07:03
你需要在页面的顶部开始会话,或者你之前呼叫会话代码
session_start();
$session_start();
extract($_POST);
//extract data from submit post
if(isset($submit))
{
if($user=="user" && $pass=="pass")
{
$_SESSION['user']= $user;
//if correct password and name store in session
}
else {
echo "Invalid user and password";
header("Locatin:form.php");
}
if(isset($_SESSION['user']))
{
//your home page code here
exit;
}
- 1. 使用会话变量的PHP登录脚本
- 2. 会话变量登录
- 3. PHP登录脚本会话问题
- 4. PHP登录脚本,会话变量或$ _GET
- 5. PHP登录,商店会话变量
- 6. 在php中登录会话
- 7. PHP登录和会话
- 8. PHP和Oracle会话登录
- 9. 如何在PHP中使用会话后登录变量?
- 10. php登录会话
- 11. PHP登录脚本,PHP的安全登录会话
- 12. 用户用会话变量登录
- 13. 使用会话变量登录后,在其他PHP文件
- 14. 在登录时保持会话变量
- 15. XML登录脚本和会话中的PHP
- 16. 在perl中使用PHP会话变量
- 17. 在PHP中使用ColdFusion会话变量
- 18. PHP会话变量和jQuery
- 19. PHP安全会话和用户登录
- 20. PHP:用户登录会话和cookies
- 21. PHP会话变量
- 22. Php - 会话变量
- 23. PHP会话变量
- 24. php会话变量
- 25. 使用会话变量的PHP登录页面
- 26. php变量会话变量
- 27. 带有ajax的PHP登录脚本,但会话变量不存在
- 28. PHP登录会话创建
- 29. PHP会话登录系统
- 30. php会话登录系统
“如果你能想象回答您的问题一整本书,你问太多。 “ - [StackOverflow常见问题](http://stackoverflow.com/faq) 为了澄清,您的问题太宽泛。 – orourkek 2012-04-10 23:30:59
以前没有发生过。看看[php.net的会话文档](http://www.php.net/manual/en/book.session.php),这是一个很好的开始:] – orourkek 2012-04-10 23:37:44
也看看这个http:// www。 phpro.org/tutorials/Introduction-To-PHP-Sessions.html – 2012-04-10 23:40:09