簡體   English   中英

PHP注冊表格-SQL

[英]PHP Registration Form - SQL

我想用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);
?> 

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

>

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注入天堂。
如果此代碼即將成為現實,則需要完全重新考慮這一點。

考慮如果有人指定用戶名:

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?

聽起來您的HTTP服務器配置錯誤,和/或不接受POST請求。 您是否在線上有此頁面,以便我查看一下並進行詳細說明?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM