我试图创建一个登录部分,它应该采取电子邮件id/电话号码和密码,并检查数据库。就像它应该的那样简单,我在-
行上得到一个TypeError,声明"string is not a function"。if ($e_check!=0) {
:
<?php
if (isset($_POST['username']) && isset($_POST['password'])) {
include_once("db_conx.php");
$u = $_POST["username"];
$p1 = $_POST["password"];
$p = md5($p1);
if ($u!=""){
if (is_numeric($u)) {
$sql = "SELECT * FROM users WHERE phone='$u' AND password='$p' LIMIT 1"; //check against phone numbers
$query = mysqli_query($con, $sql);
$result = mysqli_result($query);
$e_check = mysqli_num_rows($result);
//var_dump($e_check);
if ($e_check != 0) {
echo "Success!";
exit();
}
else {
echo "Password is incorrect";
exit();
}
}
else {
$sql = "SELECT * FROM users WHERE email='$u' AND password='$p' LIMIT 1"; //check against email
$query = mysqli_query($con, $sql);
$result = mysqli_result($query);
$e_check = mysqli_num_rows($result);
var_dump($e_check);
if ($e_check != 0) {
echo "Success!";
exit();
}
else {
echo "Password is incorrect";
exit();
}
}
}
}
?>
<html>
<head>
<meta charset="UTF-8">
<title>Sign In</title>
<script src="ajax.js"></script>
<script type='text/javascript'>
function login(){
var username = document.getElementById("username").value();
var password = document.getElementById("pwd").value();
var status = document.getElementById("status");
if (username=="" || password == "") {
status.innerHTML = "Email/Phone or Password is missing";
}
else {
status.innerHTML = "Please wait...";
var ajax = ajaxObj("POST", "index2.php");
ajax.onreadystatechange = function() {
if(ajaxReturn(ajax) == true) {
if(ajax.responseText != "Success!"){ ///returned from php file
status.innerHTML = ajax.responseText;
}
else {
//alert("Logged in");
//do nothing
}
}
}
ajax.send("username="+username+"&password="+password); //shoots variable to php
}
}
</script>
</head>
<body>
<div id="pageRight">
<form id="sign-up" onSubmit="return false;">
Email/Phone: <input type="text" id="username" >
Password: <input type="password" id="pwd">
<button id="signin" onClick="login()" style="background-color:#9C092B; color: white; padding: 9px 15px">Sign In </button><br>
<span id="status" style="color: red"></span>
</form>
</div>
</body>
</html>
我知道变量e_check没有检索到正确的返回类型,但我不明白为什么会发生这种情况。是否有更好的方法来检查查询是否成功,或者您可以建议对现有代码进行任何修改,以消除此错误?我是PHP的新手,如果这是一个愚蠢的问题,我很抱歉。提前感谢您的帮助!:)
var username = document.getElementById("username").value;
var password = document.getElementById("pwd").value;
不var username = document.getElementById("username").value();
var password = document.getElementById("pwd").value();
您需要一个结果,以获得num_row计数。使用:
$sql = "SELECT * FROM users WHERE phone='$u' AND password='$p' LIMIT 1"; //check against phone numbers
$query = mysqli_query($con, $sql);
$result = mysqli_result($query);
$e_check = mysqli_num_rows($result);
您需要在语句中使用空格(您在if语句的两个条件中都有空格),这只是糟糕的形式-
if ($e_check != 0) {
然而,这并不像其他人指出的那样是你的问题。TypeError问题是JavaScript的问题,不是PHP的问题。您创建的语句将在PHP中工作。