首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Php登录问题- post版本

Php登录问题- post版本
EN

Stack Overflow用户
提问于 2016-01-31 16:42:29
回答 1查看 118关注 0票数 0

因此,我在php中登录时遇到了问题,我的意思是它可以工作,但是当我重新加载它时,它说:

您正在查找输入的已使用信息的页面。返回到该页面可能会导致重复所采取的任何操作。

所以我真的不知道该做什么,这是代码,如果有其他问题,请帮助我改进它。

PS。我不得不使用漩涡,因为游戏脚本密码我使用的是C++和密码是使用漩涡哈希,因为这是最好的哈希插件有自动柜员机,感谢先进。

PS im是php中的一个新手,两天前就开始了,我就是这样做的:

代码语言:javascript
复制
    <?php

error_reporting(E_ALL);
session_start();


$db = "localhost";
$user = "root";
$password = "";
$base = "samp";

$konekt = mysqli_connect($db, $user, $password, $base);

if (!$konekt) {
    echo "Konekcija sa bazom nije uspela" . mysqli_connect_error();
}

if(isset($_SESSION["name"]) && $_SESSION["name"] )
{
    echo "Vec ste ulogovani, ".$_SESSION["name"]." <br>Automatski vas odjavljujemo.";
    unset( $_SESSION );
    session_destroy();
    exit;
}   

$UserPrijavljen = false;

$userName = isset($_POST["name"]) ? $_POST["name"] : null;
$userPass = isset($_POST["pass"]) ? $_POST["pass"] : null;

if($userName && $userPass)
{
    $hashedPass = hash('whirlpool', $userPass);
    $query = "SELECT Ime FROM Igraci WHERE Ime = '$userName' AND Lozinka = '$hashedPass'";
    $result = mysqli_query( $konekt, $query);

    $row = mysqli_fetch_array($result);

    if($row)
    {
        $UserPrijavljen = true;     
    }
    elseif (!$row) {
        echo "Podatci koje ste uneli nisu ispravni, sesija unistena.";
    }
}

if ( !$UserPrijavljen )
{

    echo "
            <form action='index.php' method='post'>
                Korisnicko Ime: <input type='text' name='name' value='$userName'><br>
                Lozinka: <input type='password' name='pass' value='$userPass'><br>
                <input type='submit' value='log in'>
            </form>
        ";
}
else
{
    echo "<div>";
    echo "Prijavljeni ste kao $userName!";
    echo "</div>";
    $_SESSION["name"] = $userName;
}
?>

当我重新加载页面时,是否有一种方法,它不会破坏会话并将我注销,只是为了保持日志记录,这是

代码语言:javascript
复制
    if(isset($_SESSION["name"]) && $_SESSION["name"] )
{
    echo "Vec ste ulogovani, ".$_SESSION["name"]." <br>Automatski vas odjavljujemo.";
    unset( $_SESSION );
    session_destroy();
    exit;
}   
EN

回答 1

Stack Overflow用户

发布于 2016-01-31 17:15:57

这段代码会给你一些先机:把它放在同一个页面上,它就能工作了。您必须向数据库中添加一个会话字段,以跟踪记录在案的用户。

代码语言:javascript
复制
# logout code
if($_GET['logout']) {
setcookie("login", '',time()-86400); # delete cookie
exit(); # stop executing here
}


# keep user logged in here (add a session field to your database)
if($_COOKIE["login"] && mb_strlen($_COOKIE["login"]) == '32') {

# revalidate cookie (you could use memcached here)
$session = $konekt->real_escape_string($_COOKIE["login"]);
$query = "SELECT Ime FROM Igraci WHERE session = '$session' LIMIT 1";
$result = mysqli_query( $konekt, $query); $row = mysqli_fetch_array($result);

# message
if($row['Ime']) { 
echo "User is already logged in with username ".$row['Ime']. " and hash: ".$_COOKIE["login"]. '<a href="index.php?logout=1">logout</a>?';
exit(); # don't run the next code below
}


# default login form
echo <<<EOF
<form action='index.php' method='post'>
Korisnicko Ime: <input type='text' name='name' value=''><br>
Lozinka: <input type='password' name='pass' value=''><br>
<input type='submit' value='log in'>
</form>
EOF;


if($_POST['name'] && $_POST['pass']) {
$hashedPass = $konekt->real_escape_string(hash('whirlpool', $_POST['pass']));
$userName = $konekt->real_escape_string($userName);

$query = "SELECT Ime FROM Igraci WHERE Ime = '$userName' AND Lozinka = '$hashedPass' LIMIT 1";
$result = mysqli_query( $konekt, $query); $row = mysqli_fetch_array($result);
if($row) { 
$session = md5($userName.$hashedPass); # user unique identifier
mysqli_query($konekt, "UPDATE Igraci SET session = '$session' WHERE Ime = '$userName' AND Lozinka = '$hashedPass'"); # save to db
setcookie("login", $session,time()+3600); # stay logged in for 1 hour with a unique identifier
echo "You are now logged in with hash: ".$_COOKIE["login"]. '<a href="index.php?logout=1">logout</a>?';
} else {
echo "Podatci koje ste uneli nisu ispravni, sesija unistena."; # wrong pass?
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35116356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档