2016-09-20 11 views
-6

ログインフォームの検証でエラーが発生しました。mysqli_error()の修正方法は正確に1つのパラメータを必要とします。

1.Phpコード。

<?php 
define('DB_HOST', 'localhost'); 
define('DB_NAME', 'user'); 
define('DB_USER','root'); 
define('DB_PASSWORD',''); 

$con=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysqli_error()); 
$db=mysqli_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysqli_error()); 
/* 
$ID = $_POST['user']; 
$Password = $_POST['pass']; 
*/ 
function SignIn() 
{ 
session_start(); //starting the session for user profile page 
if(!empty($_POST['user'])) //checking the 'user' name which is from Sign-In.html, is it empty or have some text 
{ 
    $query = mysqli_query("SELECT * FROM man_login where man_username = '$_POST[user]' AND man_password = '$_POST[pass]'") or die(mysqli_error()); 
    $row = mysqli_fetch_array($query) or die(mysqli_error()); 
    if(!empty($row['man_username']) AND !empty($row['man_password'])) 
    { 
     $_SESSION['userName'] = $row['pass']; 
     echo "SUCCESSFULLY LOGIN TO USER PROFILE PAGE..."; 

    } 
    else 
    { 
     echo "SORRY... YOU ENTERD WRONG ID AND PASSWORD... PLEASE RETRY..."; 
    } 
} 
} 
if(isset($_POST['submit'])) 
{ 
    SignIn(); 
} 

?> 

問題を把握するために必要な情報が必要な場合は、どうかお勧めします。親切に教えてください。

ありがとうございました。

編集:次のエラーが表示されます。

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in C:\localhost\login_man on line 8 

Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\localhost\login_man.php on line 8 
Failed to connect to MySQL: 
+3

**警告**:自分のアクセス制御層を書くことは容易ではない、それはひどく間違って取得するための多くの機会があります。 [Laravel](http://laravel.com/)のような最新の[開発フレームワーク](http://codegeekz.com/best-php-frameworks-for-developers/)がある場合は、独自の認証システムを作成しないでください。強力な[認証システム](https://laravel.com/docs/5.2/authentication)が組み込まれています。絶対に[推奨されるセキュリティのベストプラクティス](http://www.phptherightway.com/#security)に従ってください。パスワードはプレーンテキスト**として保存しないでください。 – tadman

+3

**警告**:mysqliを使用する場合は、[パラメータ化されたクエリ](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と['bind_param']( http://php.net/manual/en/mysqli-stmt.bind-param.php)を使用してクエリにユーザーデータを追加します。 **重大な[SQLインジェクションのバグ](http://bobby-tables.com/)を作成したため、文字列の補間または連結を使用してこれを実行しないでください。 ** '$ _POST'や' $ _GET'データを直接クエリに入れないでください。誰かがあなたのミスを悪用しようとすると、非常に危険です。 – tadman

+0

パラメータは、カッコ内の関数に渡す変数です。 –

答えて

2

接続オブジェクトをパラメータとしてmysqli_error()に渡す必要があります。 だから、あなたがmysqli_error($con)

を記述する必要があり、あなたの$db=mysqli_select_db(DB_NAME,$con)そして、例えばmysqli_query($con, "SELECT * FROM tableName");

、としてmysqli_query()を書く - あなたは、変数の引数を逆にする必要があります。

参考:

+0

何についてこれは?mysqli_query() – devpro

+0

そういうものがありませんでした。 –

+0

@devproの回答がmysqli_query()で更新されました。 –

関連する問題