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(); 
?> 

非常感谢你的帮助

+1

你试过了什么? – Cfreak 2012-02-29 22:39:53

+0

INSERT INTO表(字段)VALUES(值)??? – 2012-02-29 22:41:10

+0

到Cfreak:我只尝试连接到服务器,并选择类似于上面的数据库(我认为这将是第一步),但我不知道PHP标记插入表中的行 – user1239304 2012-02-29 22:42:00

你正在寻找一个MySQL的INSERT语句。

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

非常感谢很多开发人员,这工作! – user1239304 2012-02-29 22:47:44

以上飞达的回答一般是正确的,但事先警告,你不应该详细了解基本的Web安全之前做到这一点 - “消毒用户输入”的特别主题用户可能输入太多东西,除非您真的了解这个概念,否则可能会毁了您(或您服务器上的任何其他人)。

+0

谢谢,我会牢记这一点。 – user1239304 2012-02-29 22:49:17

你的代码中有有多个问题:

    你还在用古老的 mysql_*功能
  • 。相反,您应该学习如何使用PDO(或MySQLi,如果您认为MySQL只是相关RDBMS)并阅读了关于prepared statements的内容。
  • 你应该从不以纯文本形式存储密码。这是一个巨大的安全风险。你甚至可以在PHP中使用crypt()函数来做到这一点。
  • 是不是您的用户名已在该表中的UNIQUE字段?为什么要添加密码的附加条件?相反,你应该选择从表中的散列密码,并且,如果有你的用户的入口,从$_POST

不管怎么说,再检查一下对密码的哈希版本存储的哈希没有你在“问题提供了这个代码“包含允许用户输入行的任何内容*是一个Q/A网站,而不是免费的代码生成器。

+0

好的,谢谢你的回应。这绝对有帮助,我将在做出未来发帖时记住你的评论。谢谢!! – user1239304 2012-02-29 22:58:47