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

时间:2012-02-29 22:37:30

标签: php mysql



在我的网站上,我有一个PHP脚本(当用户在表单中输入“用户名”和“密码”时)检查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();
?>

非常感谢你的帮助

3 个答案:

答案 0 :(得分:1)

您正在寻找MySQL插入声明。

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

答案 1 :(得分:1)

上面飞达的答案通常是正确的,但在了解更多有关基本网络安全的信息之前,请注意不要这样做 - 尤其是清理用户输入的主题。&#34;除非你真的理解这个概念,否则用户可能输入太多东西可能会破坏你(或服务器上的任何其他人)的日子。

答案 2 :(得分:1)

您的代码存在多个问题:

  • 您仍在使用古老的mysql_*功能。相反,你应该研究如何使用PDO(或MySQLi,如果你认为MySQL只是相关的RDBMS)并阅读prepared statements
  • 您应永远以纯文本格式存储密码。这是一个巨大的安全风险。您甚至可以在PHP中使用crypt()函数来执行此操作。
  • 您的用户名不是该表中的UNIQUE字段吗?为什么要添加密码附加条件?相反,您应该从表中选择散列密码,如果您有一个条目用户,请从$_POST
  • 中对来自密码的哈希版本来填充此存储的哈希值

无论如何,您在“问题”中提供的这些代码都不包含允许用户输入行的任何内容。 StackOverflow是一个Q / A站点,而不是免费的代码生成器。