MySQL的信息输入到表中根据用户输入
在我的网站我有一个PHP脚本(当用户输入“用户名”和“密码”为形式)检查一个MySQL表为用户名的存在,密码,并将用户传递到网站的主页上。这里是我的问题:当用户输入信息到表单中时,是否有方法可以将表添加到表中?下面是上述的php页面。有没有办法修改这个脚本来允许用户输入行?MySQL的信息输入到表中根据用户输入
<?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);
非常感谢很多开发人员,这工作! – user1239304 2012-02-29 22:47:44
以上飞达的回答一般是正确的,但事先警告,你不应该详细了解基本的Web安全之前做到这一点 - “消毒用户输入”的特别主题用户可能输入太多东西,除非您真的了解这个概念,否则可能会毁了您(或您服务器上的任何其他人)。
谢谢,我会牢记这一点。 – user1239304 2012-02-29 22:49:17
你的代码中有有多个问题:
-
你还在用古老的
- 。相反,您应该学习如何使用PDO(或MySQLi,如果您认为MySQL只是相关RDBMS)并阅读了关于prepared statements的内容。
- 你应该从不以纯文本形式存储密码。这是一个巨大的安全风险。你甚至可以在PHP中使用
crypt()
函数来做到这一点。 - 是不是您的用户名已在该表中的
UNIQUE
字段?为什么要添加密码的附加条件?相反,你应该选择从表中的散列密码,并且,如果有你的用户的入口,从$_POST
mysql_*
功能
不管怎么说,再检查一下对密码的哈希版本存储的哈希没有你在“问题提供了这个代码“包含允许用户输入行的任何内容。 StackOverflow是一个Q/A网站,而不是免费的代码生成器。
好的,谢谢你的回应。这绝对有帮助,我将在做出未来发帖时记住你的评论。谢谢!! – user1239304 2012-02-29 22:58:47
你试过了什么? – Cfreak 2012-02-29 22:39:53
INSERT INTO表(字段)VALUES(值)??? – 2012-02-29 22:41:10
到Cfreak:我只尝试连接到服务器,并选择类似于上面的数据库(我认为这将是第一步),但我不知道PHP标记插入表中的行 – user1239304 2012-02-29 22:42:00