MySQL将用户输入的信息输入到表中


MySQL enter information into table from user input



在我的网站上,我有一个PHP脚本,当用户在表单中输入"用户名"answers"密码"时,它会检查MySQL表中是否存在用户名和密码,并将用户传递到网站主页上。我的问题是:当用户向表单中输入信息时,有没有办法向表中添加行下面是上面描述的php页面。有没有办法修改这个脚本以允许用户输入行?

<?php
ob_start();
$host="--------"; // Host name 
$username="-------"; // Mysql username 
$password="--------"; // Mysql password 
$db_name="--------"; // Database name 
$tbl_name="-------"; // Table name 
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword"); 
header("location:login_success.php");
}
else {
echo "Wrong Username or Password";
}
ob_end_flush();
?>

非常感谢您的帮助

您正在寻找MySQL Insert语句。

$sql = "INSERT INTO $tbl_name (username, password) values ('$myusername', '$mypassword')";
$result=mysql_query($sql);

Feida上面的答案通常是正确的,但在了解更多关于基本网络安全的知识之前,特别是"净化用户输入"的主题之前,请注意,你不应该这样做。除非你真正理解这个概念,否则用户可能会输入太多的内容,这些内容可能会毁掉你(或服务器上的其他人)的一天。

您的代码存在多个问题:

  • 您仍在使用古老的mysql_*函数。相反,您应该学习如何使用PDO(或者MySQLi,如果您认为MySQL只是关系RDBMS的话),并阅读准备好的语句
  • 您应该永远不要以纯文本形式存储密码。这是一个巨大的安全风险。您甚至可以使用PHP中的crypt()函数来完成此操作
  • 您的用户名不是已经是那个表中的UNIQUE字段了吗?为什么要用密码添加附加条件?相反,您应该从表中选择散列后的密码,并且,如果有适合您的用户的条目,请将此存储的散列与$_POST中的散列版本的密码进行核对

无论如何,您在"question"中提供的这些代码都不包含允许用户输入行的的任何内容StackOverflow是一个问答网站,而不是一个免费的代码生成器