检查用户是否已登录,然后检查用户是否已在选中单选按钮的情况下登录

沉默的菜鸟

这是我在这里的第一篇文章,所以请对评论保持温和。

我有一个我正在玩的网站。它有一个基本的登录页面/注册页面。如果用户未登录,他可以访问所有页面,但无法查看价格。当用户登录时,价格变为可用。我的问题是如何做到这一点,以便当用户在登录页面上时,他可以选择两个单选按钮之一,并且该选定的用户将登录并显示特定于任一单选按钮的内容。 . 即:登录并点击高价(登录后我可以看到高价)注销并点击低价登录然后我只看到低价。

这是我的 login.php 代码

<?php
require('db.php');
// If form submitted, insert values into the database.
if (isset($_POST['username'])){

    $username = stripslashes($_REQUEST['username']); // removes backslashes
    $username = mysqli_real_escape_string($con,$username); //escapes special characters in a string
    $password = stripslashes($_REQUEST['password']);
    $password = mysqli_real_escape_string($con,$password);

//Checking is user existing in the database or not
    $query = "SELECT * FROM `users` WHERE username='$username' and password='".md5($password)."'";
    $result = mysqli_query($con,$query) or die(mysql_error());
    $rows = mysqli_num_rows($result);
    if($rows==1){
        $_SESSION['username'] = $username;
        header("Location: index.php"); // Redirect user to index.php
        }else{
            echo "<div class='form'><h3>Username/password is incorrect.</h3><br/>Click here to <a href='login_page.php'>Login</a></div>";
            }
}else{?>

<!-- header ends here -->
<!-- ****************************************** -->
<!-- enquiry / newsletter / login / register goes here -->
<div class="container">
</div>
<div class="clear"></div>
<!-- Main page content goes here -->
<div class="content_landing">
<p><div class="form">
<h2>Log In to view Prices and Specials</h2>
<form action="" method="post" name="login">
<input type="radio" name="radio" value="birthday" checked> Birthday Prices<br>
 <input type="radio" name="radio" value="corporate"> Corporate Prices<br>
<input type="text" name="username" placeholder="Username" required /><br>
<input type="password" name="password" placeholder="Password" required /><br>
<input name="submit" type="submit" value="Login" />
</form>
<p>Not registered yet? <a href='registration.php'>Register Here</a></p>
</div></p>
<?php } ?>
</div>
</div>

一旦用户登录,他就会看到这个内容(在 products.php 上:(他应该去看看)

<p><b>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</p>

<?php if(isset($_SESSION['username'])){ ?>
<p>Pricing below:</p>
<p><a class="link" href="logout.php" style="text-decoration:none">Logout</a></p>
<?php }else{ ?>
  <a class="link" href="login_page.php" style="text-decoration:none">login</a> or <a class="link" href="registration_page.php" style="text-decoration:none">Register</a>
<?php } ?>

我仍然是网页设计的超级菜鸟,所以请原谅我的缩进和方法等。

拉斯克拉特

您只需分配一个在显示定价时检查的新会话变量:

<?php
require('db.php');
if (isset($_POST['username'])){
    $username = stripslashes($_REQUEST['username']);
    $username = mysqli_real_escape_string($con,$username);
    $password = stripslashes($_REQUEST['password']);
    $password = mysqli_real_escape_string($con,$password);
    $query = "SELECT * FROM `users` WHERE username='$username' and password='".md5($password)."'";
    $result = mysqli_query($con,$query) or die(mysql_error());
    $rows = mysqli_num_rows($result);
    if($rows==1){
        $_SESSION['username'] = $username;
        $_SESSION['view_type'] = (!empty($_POST['corporate']))? 'c' : 'b';
        header("Location: index.php");
        exit;
    }else{
        echo "<div class='form'><h3>Username/password is incorrect.</h3><br/>Click here to <a href='login_page.php'>Login</a></div>";
    }
} else { ?>...etc.

要使用变量,明智的做法是创建一两个函数,这样您就不会一遍又一遍地重复一堆if/else

# Checks if user is corporate
function isCorporate()
    {
        return (isset($_SESSION['view_type']) && $_SESSION['view_type'] == 'c');
    }
# Checks if user is birthday
function isBirthday()
    {
        return (isset($_SESSION['view_type']) && $_SESSION['view_type'] == 'b');
    }
# Checks if user is logged in at all
function isLoggedIn()
    {
        return (!empty($_SESSION['username']));
    }

所以你会做这样的事情:

# Logged In?
if(isLoggedIn()) {
    # What kind of login?
    echo (isCorporate())? 'Higher value' : 'Lower value';
}
else
    # Not logged in...
    echo 'Log in to see price!';

$_SESSION['view_type']在决定价格视图时核对一下

要仅具有视图类型,您可以使用带有复选框的相同表单,如果选中,将允许您的逻辑忽略用户名和密码字段,您可以使用单独的表单,您可以有几个样式<a>链接看起来像单选按钮等。有很多方法可以让会话在不完全登录用户的情况下创建视图。

几个侧面说明,你不应该逃避用户提交,你应该绑定参数。通过绑定参数,这意味着您不会像现在那样将变量直接放入 sql 语句中。其次,您应该使用password_hash()/password_verify()来存储和检索密码哈希。md5()不足以保证安全。最后添加exit使用重定向后header(),它将停止脚本的任何进一步执行,即使之后没有任何内容,这样做也是个好习惯。

关于函数的一个注意事项,您只需require_once('myfunctions.php');要将它们存储在一个可包含的文件中,只需将它们包含在页面顶部即可。


编辑:


因此,根据您的评论中的代码片段:

<?php
if(isset($_SESSION['username'])){ ?>
    <p>Pricing below:</p>
    <?php if(isCorporate()) { ?>
    <h1>$100</h1>
    <?php } elseif(isBirthday()) { ?>
    <h3>$50</h3>
    <?php } else { ?>
    <p><em>NOT SET YET</em></p>
    <?php } ?>
    <p><a class="link" href="logout.php" style="text-decoration:none">Logout</a></p>
<?php } else { ?>
    <a class="link" href="login_page.php" style="text-decoration:none">login</a> or <a class="link" href="registration_page.php" style="text-decoration:none">Register</a>
<?php } ?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Steamworks检查用户是否已登录

SharedPreferences并检查用户是否已登录

Firebase:如何检查用户是否已登录?

我如何检查用户是否已登录?

JSP:如何检查用户是否已登录?

解析,检查以查看用户是否已登录

如何检查用户是否已登录

检查用户是否已登录laravel 4

php检查用户当前是否已登录

如何检查用户是否已在Servlet中登录?

检查用户是否已在Android SQLite中登录

检查用户是否已在客户端登录

jQuery检查单选按钮是否已选中

如何检查用户是否登录

当用户尝试登录时,在不检查数据库的情况下返回 401 HTTP 状态代码是否合适?

如何在没有注册或登录尝试的情况下检查用户是否存在于 firebase auth 中?

如何以编程方式检查 IAM 用户是否在没有 MFA 的情况下登录 AWS 控制台?

Flask 用户登录 - 检查用户是否存在

Firebase-始终检查用户是否已登录的最佳方法?

使用Firebase AuthUI检查用户是否已首次登录

检查Windows用户登录密码请求是否已启用

检查用户是否已登录以在响应中使用Firebase

CakePHP 3:如何正确检查用户是否已登录

在Treeline中,如何检查当前用户是否已登录?

如何检查特定用户是否已登录Laravel?

有条件检查用户是否已登录Umbraco

如何检查用户是否已登录Swift中的Google帐户?

如何检查当前用户是否已登录android

如何检查用户是否已登录以及是否未重定向到登录屏幕