gpt4 book ai didi

php - 客户端和服务器 php sql bug

转载 作者:行者123 更新时间:2023-11-29 13:39:06 33 4
gpt4 key购买 nike

我只是无法弄清楚这段代码有什么问题。

我只是将用户名和密码发送到服务器,然后服务器发回响应。服务器写入数据库没有问题,但在客户端有时无法到达 if(xmlhttp.readyState==4 && xmlhttp.status==200) 内部。在执行 alert('login5') 行后,jquery 动画重置。我知道这是 php 的问题,但我不知道为什么它有时有效但有时无效,任何帮助都是值得赞赏的。

<script type = "text/javascript">

function sendLogin(){

var xmlhttp;
var getString;
var url = "login.php";

var username=document.getElementById('name').value;
var password=document.getElementById('pw').value;
var url= url+ "?username="+username+"&password="+password;


if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.open("get", url , true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4 && xmlhttp.status==200){

alert("reached inside");
getString = xmlhttp.responseText;
alert(getString);
}
}

xmlhttp.send();
alert('login5');
//problem here, have to wait a while
}

</script>

html代码:

        <form id="logInBoxes">
<input type="text" placeholder="username" id='name' size="15px">
<input type="password" placeholder="pw" id='pw' size="10px">
<input type="submit" value="Log In" onclick='sendLogin()'>
</form>

PHP 代码:

<?php
$username= $_GET['username'];
$password= $_GET['password'];

$salt = mcrypt_create_iv(32, MCRYPT_RAND);
$password = crypt($password, $salt);

$salt = mysql_real_escape_string($salt);
$password = mysql_real_escape_string($password);
$sql = mysqli_connect('localhost','root','','housescale');
// Check connection
if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();
}


mysqli_query($sql, "INSERT INTO user (username, password, salt)
VALUE
('$username', '$password','$salt')") or trigger_error(mysql_error());



mysqli_close($sql);

echo $username;


?>

编辑:如果我在循环中再执行 alert('login5') 9 次,它就会起作用。此延迟修复到底意味着什么?

最佳答案

这是我使用的对我有效的代码:

test.html

<!DOCTYPE html>
<html>
<head>
<script type = "text/javascript">

function sendLogin() {

var xmlhttp;
var getString;
var url = "login.php";

var username = document.getElementById( 'name' ).value;
var password = document.getElementById( 'pw' ).value;
url = url + "?username=" + username + "&password=" + password; //Don't Need to Re-Declare url Variable

if( window.XMLHttpRequest ) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject( "Microsoft.XMLHTTP" );
}

xmlhttp.open( "get", url , true );
xmlhttp.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );

xmlhttp.onreadystatechange = function() {

if( xmlhttp.readyState == 4 ) {

if( xmlhttp.status == 200 ) { //Separated readyState and Status

alert( "reached inside" );
getString = xmlhttp.responseText;
alert( getString );
}
}
}; //Missed Semi-Colon Here

xmlhttp.send();
alert( 'login5' );
}
</script>
</head>
<body>
<form id="logInBoxes">
<input type="text" placeholder="username" id='name' size="15px">
<input type="password" placeholder="pw" id='pw' size="10px">
<input type="submit" value="Log In" onclick='sendLogin()'>
</form>
</body>
</html>

login.php

<?php
$username= $_GET['username'];
$password= $_GET['password'];

$salt = mcrypt_create_iv( 32, MCRYPT_RAND );
$password = crypt( $password, $salt );

$sql = mysqli_connect( 'localhost', 'root', '', 'housescale' );
$salt = mysqli_real_escape_string( $sql, $salt );
$password = mysqli_real_escape_string( $sql, $password );

// Check connection
if ( mysqli_connect_errno() ){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

mysqli_query( $sql, "INSERT INTO user ( username, password, salt ) VALUE ( '$username', '$password', '$salt' )" )
or trigger_error(mysql_error());

mysqli_close( $sql );

echo $username;
?>

我在 Windows 7 上使用 Mozilla Firefox 23。我的堆栈是 Uniform Server 8.8.2 (PHP 5.4.14/MySQL 5.5.30)。

为了快速起见,我将表中的所有字段设置为 varchar(255)。它对我来说只有一个问题,有时盐/密码在我的数据库中变成空,但这可能是一个字符集问题,因为它能够很好地回显几种不同的组合。

关于php - 客户端和服务器 php sql bug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18346318/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com