0

2 つのテキスト ボックスからデータベースに値を入力しようとしていますが、ユーザー名とパスワードを送信すると、次のエラーが表示されます。システムの管理者によるデータベース チェックでユーザーが入力されていません。

<?php
    session_start();
    $logged_in = isset($_SESSION['USERNAME']) && $_SESSION['USERNAME'] ?
 $_SESSION['USERNAME'] : null;
    if(!$logged_in) {   
    }
error_reporting(E_ALL & ~E_NOTICE);
include 'dbconfig.php';

     global $db;


$username=$_POST['username'];
$password=$_POST['password'];

// encrypting password
$encrypted_password=md5($password);

$stmt = $db->prepare("SELECT * FROM user_info WHERE username = ?");
$stmt->execute(array($username)); 
$row = $stmt->fetch(PDO::FETCH_ASSOC);



if (! $row){

//add new user to database
$stmt = $db->prepare("INSERT INTO user_info(username, password) VALUES (?,?)");
$params1 = array($username, $encrypted_password);



if (!$stmt ->execute($params1)){
echo "user has not been entered on the database check with administrator of the system.  
<span class='label label-important'>Important</span>";

}else{
echo $username." has been added to the database as a supervisor. <span class='label 
label-success'>Success</span>";


}
else{
echo $username." is already a user of the system <span class='label label- 
warning'>Warning</span>";

}
$db = null; 
?>

var_dump($行); false ブール値を返し、値をデータベースにロードしません。何か案は?ありがとう。

4

1 に答える 1

1

あなたのコードからは、エラーがどこにあるのか完全には理解できません。

しかし、

エラーが発生するので

if (!$stmt ->execute($params1)){

ステートメント、データベース関連のエラーだと思います。

したがって、最初にテーブルのユーザー名フィールドのサイズを確認してください。フィールドに対するユーザー入力の maxlength チェックを行います。

また、md5 パスワード暗号化では 30 文字近くが返されることに注意してください。したがって、パスワード フィールドを 50 文字の長さにすると安全です。

また、他にもエラーの原因が考えられますが、上記をご確認の上、再度お試しください。

ありがとう

于 2013-03-19T17:53:31.760 に答える