窗体不运行PHP
问题描述:
因此,我正在为我的班级分配工作,在该班级中我应该输入用户名和密码,并根据我连接的数据库中的表中的列表对其进行检查。窗体不运行PHP
问题是当我单击提交按钮时什么都没有发生我认为这可能是某种语法错误。由于我是PHP新手,很有可能它是一些显而易见的事情,但对我来说并不那么重要。
我有我的数据库数据存储在两个PHP数组(每个领域一个)。然后我将数组转换为json,我将在我的JavaScript函数中使用这个函数,该函数将根据用户输入的数据进行检查。
我在一个文档中包含一个表单,一个PHP脚本和一个JavaScript脚本,可能会导致这个问题?
这是我的代码,谢谢你的帮助!
<html>
<body>
<?php
/*config is included in order to protect my login info*/
require('config.php');
Echo "Project 4";
/*SQL connection*/
$conn = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
/*Checking Connection*/
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$sql = "SELECT * FROM p4Data";
$data2 = mysqli_query($conn, $sql);
/*Display Data*/
echo "<table border = 1 style='float:left'>
<tr>
<th>Username</th>
<th>Password</th>
</tr>";
//Array Declarations
$usernameArr = [];
$passwordArr = [];
while($records = mysqli_fetch_array($data2)){
array_push($usernameArr,$records["username"]);
array_push($passwordArr,$records["password"]);
}
echo "</table>";
//JSON Conversion
$usernameJson = json_encode($usernameArr);
$passwordJson = json_encode($passwordArr);
mysqli_close($conn);
?>
<!-- JAVA SECTION -->
<script type="text/javascript">
var obj = JSON.parse('<?= $usernameJson; ?>');
var obj2 = JSON.parse('<?= $passwordJson; ?>');
function verifUser(){
var usernameData = document.getElementById("username").value;
var passwordData = document.getElementById("password").value;
for (i = 0; i < 30; i++){
if(usernameData == obj[i]){
alert("Username verfied at " + i);
indexLocated = i;
break;
}
}
}
</script>
<form name='form-main'>
Username: <input type="text" id="username"><br>
Password: <input type="password" id="password"><br>
<input type="button" value="Login >>" id="submitButton"
onclick="verifUser()">
</form>
</body>
</html>
答
您可以使用POST方法来获取用户输入的值,这样
<form method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" name="submit" value="login">
</form>
,并使用这个PHP代码中获取价值,当表单提交
if(isset($_POST['submit'])){
$username_input = $_POST['username'];
$password_input = $_POST['password'];
}
然后进行查询到sql,其中username = $ username和password = $ password。像下面
$sql query = " SELECT * FROM TABLE WHERE username = $username and password = $password";
并使用
$num_rows = mysqli_num_rows($sql_query);
现在做的$检查NUM_ROWS = 1,则意味着输入用户名和密码是否有效还有回音不适
if($num_rows = 1){
**some code **
}else{
echo "Invalid information provided";
};
当你运行你的代码你是否在PHP错误日志或浏览器的开发者控制台(在大多数浏览器中可以通过按F12打开)看到错误?不是你要求的,但是请注意,将所有用户名和密码发送到浏览器是一种严重的安全漏洞。**即使除了未加密的密码根本不应该存储之外,您应该只需将输入的值发送到服务器并在那里验证,而不是将所有密码发送到浏览器。 – nnnnnn
这是全部倒退。你应该为数据库中的用户名和密码匹配做一个简单的查询,而不是将整个数据库发送到浏览器 – charlietfl
好的,这是有道理的。因此,您的意思是将用户输入的数据发送到PHP脚本,并将其与我设置的阵列成员进行比较。我应该忘记整个json部分。不必担心加密密码,因为它们只是为了学习。 –