gpt4 book ai didi

PHP 注册表 - SQL

转载 作者:行者123 更新时间:2023-12-01 00:33:46 27 4
gpt4 key购买 nike

我想用 PHP 制作一个注册表,将他们的用户名和密码注册到我的 SQL 数据库中。这是我所拥有的:

配置.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);
?>

索引.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

>

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.';
}
?>

好的,问题出在我将其发布到我的网站时。它给了我这个错误,说 POST 不可用或什么的。等等让我备份,当我按注册时,它说那个错误。我将如何解决这个问题?他们的代码有什么问题吗?

谢谢,

凯文

最佳答案

嗯... 太多问题我不知道从哪里开始。首先,您的密码是 SQL injection天堂。
如果这段代码要面世,您需要彻底重新考虑这一点。

考虑一下如果有人指定用户名会发生什么:

blah","blah");DELETE TABLE 用户;

您没有为此发布您的登录代码,但鉴于您当前的编码风格,请考虑是否有人在登录时指定了密码:

asdf"OR "1"= "1

这将有效地登录任何没有密码的用户。

此外,密码永远不应以明文形式存储。它们至少应该加密存储。在几乎所有情况下,它们都应该被散列。也就是说,它们应该使用像 SHA256 这样的一种加密方式来存储。 A recent discussion on this.

然后为了检查用户是否提供了有效密码,您比较两个散列版本,并且永远不知道原来的是什么。

考虑使用 mysqli库而不是 mysql。 php 中的 mysql 很旧,而且比 mysqli 慢很多。 Mysqli 还提供了一个叫做 prepared queries 的东西。如果使用得当,可以消除 SQL 注入(inject)的风险。 A class I've written to simplify it's use.

除了这些问题之外,您似乎没有在 register_do.php 中包含 config.php。没有它,您的 SQL 语句将无法运行。

您使用的是什么版本的 php 和 mysql?

关于PHP 注册表 - SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1618629/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com