您好 ,我为编写的PHP代码所困扰。我盯着这个看了好几个小时都没有成功,请帮忙找出我显然已经解决的所有错误。
我想要此脚本执行的操作是从html表单页面中查询数据库表(“用户”)以确保其密码和用户名正确,然后在单独的表(“令牌”)中插入随机令牌(我以前使用过的方法,它可以正常工作)进入“
tk”列,然后用户进行常规身份验证。代码从“用户”表拉入“令牌”表中的“ gauth”列。
进行其他常规身份验证的原因是,我可以提取其用户名并将其显示在我计划“保护”的所有页面上
对不起,如果我感到困惑,这是我可以改进的最佳方法。另外,我不太擅长格式化:)。稍后我将添加一些html,这就是标记在那里的原因。
MySQL表:
用户示例:
cols: username | password | email | classcode | tcode | genralauth |
hello | world | hello.world@gmail.com | 374568536 | somthin | 8945784953 |
Tokens Example:
cols: gauth | tk |
3946893485 |wr8ugj5ne24utb|
PHP:
<html>
<?php
session_start();
error_reporting(0);
$servername = "localhost";
$username = "-------";
$password = "-------";
$db = "vws";
?>
<?php
// Create connection
$conn = new mysqli($servername, $username, $password, $db);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
<?php
$sql1 = "SELECT username FROM users";
$data1 = $conn->query($sql1);
if ($conn->query($sql1) === TRUE) {
echo "";
}
?>
<?php
$sql2 = "SELECT password FROM 'users'";
$data2 = $conn->query($sql2);
if ($conn->query($sql2) === TRUE) {
echo "";
}
?>
<?php
$bytes = openssl_random_pseudo_bytes(3);
$hex = bin2hex($bytes);
?>
<?php
if($_POST['pss'] == $data2 and $_POST['uname'] == $data1) {
$correct = TRUE;
}
else {
$correct = FALSE;
}
?>
<?php
if ($correct === TRUE) {
$sql3 = "SELECT generalauth FROM users WHERE password='".$_POST['pss']."'";
$result3 = $conn->query($sql3);
}
?>
<?php
if ($correct === TRUE) {
$sql4 = "INSERT INTO tokens (tk,gauth) VALUES (".$hex."' , '".$result3."')";
if ($conn->query($sql4) === TRUE) {
echo "New token genrated.";
} else {
echo "Error: " . $conn->error;
}
}
?>
<?php
if ($correct === TRUE) { ?>
<p>Succesfuly loged in!</p><br/>
<a href="../index.php<?php echo " ?view=teacher";?>"><button>Continue</button></a><br/>
<?php
}
elseif ($correct === FALSE) { ?>
<p>Incorrect, please try again.</p><br/>
<a href="../login.php"><button>Back</button></a><br/>
<?php
}
?>
<?php
if ($correct === TRUE) {
$_SESSION['auth'] = $hex;
$_SESSION['logstat'] = TRUE;
}
?>
<?php
if ($correct === FALSE) {
$_SESSION['logstat'] = FALSE;
}
$conn->close();
?>
这是我将在大多数页面上用于令牌身份验证的PHP,但是它实际上并没有检查数据库的“令牌”,我还需要一种使用常规身份验证显示登录用户名的方法。
PHP:
<html>
<h1 class="title">Virtual Work Sheets!</h1>
<a href="login.php"><p class="h_option">[Log In / Register]</p></a><hr/>
<div class="body">
<?php
session_start();
error_reporting(0);
$servername = "localhost";
$username = "root20";
$password = "jjewett38";
$db = "vws";
?>
<?php
// Create connection
$conn = new mysqli($servername, $username, $password, $db);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
<?php
$sql = "SELECT tk FROM tokens";
$data = $conn->query($sql);
?>
<?php
if (!$_GET['tk'] == $data) {
echo "
<p>Invalid token, please consider re-logging.</p>
";
}
else {
?>
<?php
switch ($_GET['view']) {
case teacher:
?>
教师页面html在这里…
<?php
break;
case student:
?>
学生页面html在这里…
<?php
break;
default:
echo "Please login to view this page.";
}
}?>
</html>
我建议您改变方法。
尽管乍看之下这些示例文件看起来很多,但是一旦研究它们,您会发现它实际上比现在的方向更加简单和合乎逻辑。
首先,将db connect / login内容移到一个单独的文件中,require
或include
将该文件移到每个PHP页面的顶部:
初始化PHP
// Create connection
$conn = new mysqli($servername, $username, $password, $db);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//Might as well also load your functions page here, so they are always available
require_once('fn/functions.php');
?>
现在,在“索引(和受限)”页面上查看我们如何使用它?
索引文件
<?php
require_once('inc/head.inc.php');
require_once('fn/init.php');
?>
<body>
<!-- Examples need jQuery, so load that... -->
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<!-- and our own file we will create next... -->
<script type="text/javascript" src="js/index.js"></script>
<div id="pageWrap">
<div id="loginDIV">
LoginID: <input type="text" id="liID" /><br>
LoginPW: <input type="password" id="liPW" /><br>
<input type="button" id="myButt" value="Login" />
</div>
</div>
JS / INDEX.JS
$(function(){
$('#myButt').click(function(){
var id = $('#liID').val();
var pw = $('#liPW').val();
$.ajax({
type: 'post',
url: 'ajax/login.php',
data: 'id=' +id+ '&pw=' +pw,
success: function(d){
if (d.length) alert(d);
if (d==1) {
window.location.href = 'restricted_page.php';
}else{
$('#liID').val('');
$('#liPW').val('');
alert('Please try logging in again');
}
}
});
});//END myButt.click
}); //END document.ready
AJAX /登录
<?php
$id = $_POST['id'];
$pw = $_POST['pw'];
//Verify from database that ID and PW are okay
//Note that you also should sanitize the data received from user
if ( id and password authenticate ){
//Use database lookups ot get this data: $un = `username`
//Use PHP sessions to set global variable values
$_SESSION['username'] = $un;
echo 1;
}else{
echo 'FAIL';
}
RESTRICTED_PAGE.PHP
<?php
if (!isset($_SESSION['username']) ){
header('Location: ' .'index.php');
}
require_once('inc/head.inc.php');
require_once('fn/init.php');
?>
<body>
<h1>Welcome to the Admin Page, <?php echo $_SESSION['username']; ?>
<!-- AND here go all teh restricted things you need a login to do. -->
问题内容: 我有一个login.html网页,允许用户输入用户名和密码。当他单击“提交”时,我将使用Javascript收集输入的值,然后对php文件进行Ajax POST调用,然后发送用户名和密码。 我在这里担心的是,这是发送用户名和密码的安全方法吗?如果不是,我如何确保从后端将数据从html文件发送到php的交易的安全性? php文件然后连接到MySql Db并检查用户是否退出以及密码是否正确
本文向大家介绍PHP实现简易用户登录系统,包括了PHP实现简易用户登录系统的使用技巧和注意事项,需要的朋友参考一下 PHP简易用户登录系统,供大家参考,具体内容如下 最近刚刚看到PHP连接数据库的实例,于是做了一个简易的用户系统 直接上代码 连接数据库:connect.php 用户注册前端页面:reg.html 注册后端处理:reg.php 用户登录前端页面:login.html 登录后端处理:l
我想做的是保护一些敏感表单免受但不是所有页面中的攻击。 要保护从如果我设置它在config.php它适用于所有的页面.有没有办法做到这一点只有一些页面通过设置在控制器?
我正试图创建一些PHP代码与登录表单的网站,如果用户将尝试登录用户名和密码,页面将显示“欢迎…”。当用户试图输入用户名和密码时,显示的网站是空白的,上面什么都没有。另外,我已经用用户名和密码创建了mysql数据库。 我主页上的这个登录表单index.html: 这是我的php页面login.php: 在我的欢迎页面-第1页。html我包含了一些php代码:
我想用selenium登录这个网页。我尝试了selenium的find_element_by_,并使用浏览器中的检查元素。但是我无法登录。我在搜索id、名称、类名,这样我就可以用send_keys传递数据,但是没有做到这些。有人能帮助我提供一些代码来将数据推送到所需的字段吗?谢谢。这就是我到目前为止所做的。 在此之后,我试图点击按钮登录使用 但它失败了。它给出了无法找到“登录”的错误。由于默认情况
我已经使用jsp创建了一个登录环境<代码>索引。jsp,登录。jsp。我从数据库中获取用户名和密码。如果用户名和密码与数据库匹配,则登录过程将完美完成。当用户给出错误的名称或密码时,它会显示错误消息,并重定向到登录页面。没什么问题,但我第一次登录时遇到了一个问题。提交错误名称或密码后显示错误消息的位置,该位置显示为空。 为什么显示null? 下面是我的代码 指数jsp login.jsp