lab*_*b12 0 php mysql sql registration
我想从PHP创建一个注册表单,将他们的用户名和密码注册到我的SQL数据库中.这是我有的:
config.php文件:
<?php
$host['naam'] = 'localhost'; // my host
$host['gebruikersnaam'] = 'root'; // my database username
$host['wachtwoord'] = ''; // my database password
$host['databasenaam'] = 'project'; // my database name
$db = mysql_connect($host['naam'], $host['gebruikersnaam'], $host['wachtwoord']) OR die ('Cant connect to the database');
mysql_select_db($host['databasenaam'], $db);
?>
Run Code Online (Sandbox Code Playgroud)
index.php文件:
<head>
<title>Deltalus Account Registration</title>
<style>
*{ FONT-SIZE: 8pt; FONT-FAMILY: verdana; } b { FONT-WEIGHT: bold; } .listtitle { BACKGROUND: #425984; COLOR: #EEEEEE; white-space: nowrap; } td.list { BACKGROUND: #EEEEEE; white-space: nowrap; } </style>
</head>
<center><br><br><br><br>
<h1>Deltalus Database</h1>
<table cellspacing=1 cellpadding=5>
<tr>
<td class=listtitle colspan=2>Register at my server</td></tr>
<form action="register_do.php" method="POST">
<tr><td class=list align=right>Username:</td><td class=list><input type=text name=name maxlength="30"></td></tr>
<tr><td class=list align=right>Password:</td><td class=list><input type=password name=pass maxlength="30"></td></tr>
</td></tr>
<tr><td class=listtitle align=right colspan=2><input type=submit name=submit value='Register'></td></tr>
</form>
</table>
<br>
</center></body></html
>
Run Code Online (Sandbox Code Playgroud)
register_do.php:
<?php
print '<title>Deltalus Database Server</title>';
$name = $_POST['name'];
$pass = $_POST['pass'];
include('config.php');
$sel = 'SELECT * FROM user WHERE username="'.$_POST['name'].'"';
if($name == ""){
echo 'No username filled in';
exit();
}elseif(mysql_num_rows(mysql_query($sel)) >= 1 ){
echo 'This username does already exists!';
exit();
}elseif($pass == ""){
echo 'No password filled in';
exit();
}else{
$d = 'INSERT INTO users (username, password) VALUES ("'.$name.'", "'.$pass.'")';
mysql_query($d) OR die (mysql_error());
echo 'Your account has been created, you can now login.';
}
?>
Run Code Online (Sandbox Code Playgroud)
好的问题是我发布到我的网站时.它给了我这个错误,说POST不可用或什么的.等我让我备份,当我按下注册时,它会说错误.我该如何解决这个问题?我的编码是他们的错吗?
谢谢,
凯文
嗯...这么多问题我不知道从哪里开始.首先,你的代码是SQL注入天堂.
如果这段代码能够看到光明的一天,你需要完全重新思考这个问题.
考虑如果某人指定了用户名,会发生什么:
blah","blah");DELETE TABLE users;
您没有为此发布您的登录代码,但考虑到您当前的编码风格,请考虑是否有人在登录时指定了密码:
asdf" OR "1" = "1
这将有效地登录任何没有密码的用户.
密码也绝不应以纯文本形式存储.它们至少应该加密存储.几乎在所有情况下都应该进行哈希处理.也就是说它们应该使用SHA256这样的单向加密来存储. 最近对此进行了讨论.
然后检查用户是否提供了有效密码,您比较两个散列版本,并且永远不知道原始版本是什么.
考虑使用mysqli库而不是mysql.php中的mysql是旧的,比mysqli慢很多.Mysqli还提供了一些称为准备好的查询,如果使用正确,可以消除SQL注入的风险. 我写的课程是为了简化它的使用.
除了这些问题之外,您似乎没有在register_do.php中包含config.php.没有它,你的SQL语句将无法工作.
您使用的是什么版本的php和mysql?
| 归档时间: |
|
| 查看次数: |
3230 次 |
| 最近记录: |