2016-12-08 8 views
0

を期待し、私は、しかし、私は次のエラーを与えられた、レジスタやログインページを要求するWebページを作成しています警告:ここではライン上の\アビスWebサーバー\ htdocsに\プロジェクト\のregister.php 64警告:</p> <p>:mysqli_query()は、少なくとも2つのパラメータ、1つの与えられた... register.phpライン64

register.php

<?php 
ob_start(); 
session_start(); 
if(isset($_SESSION['user'])!=""){ 
    header("Location: home.php"); 
} 
include_once 'connect_db.php'; 

$error = false; 

if (isset($_POST['btn-signup'])) { 

    // clean user inputs to prevent sql injections 
    $name = trim($_POST['name']); 
    $name = strip_tags($name); 
    $name = htmlspecialchars($name); 

    $email = trim($_POST['email']); 
    $email = strip_tags($email); 
    $email = htmlspecialchars($email); 

    $pass = trim($_POST['pass']); 
    $pass = strip_tags($pass); 
    $pass = htmlspecialchars($pass); 

    // basic name validation 
    if (empty($name)) { 
     $error = true; 
     $nameError = "Please enter your full name."; 
    } else if (strlen($name) < 3) { 
     $error = true; 
     $nameError = "Name must have atleast 3 characters."; 
    } else if (!preg_match("/^[a-zA-Z ]+$/",$name)) { 
     $error = true; 
     $nameError = "Name must contain alphabets and space."; 
    } 

    //basic email validation 
    if (!filter_var($email,FILTER_VALIDATE_EMAIL)) { 
     $error = true; 
     $emailError = "Please enter valid email address."; 
    } else { 
     // check email exist or not 
     $query = "SELECT userEmail FROM users WHERE userEmail='$email'"; 
     $result = mysqli_query($dbc, $query); 
     $count = mysqli_num_rows($result); 

     if($count!=0){ 
      $error = true; 
      $emailError = "Provided Email is already in use."; 
     } 
    } 
    // password validation 
    if (empty($pass)){ 
     $error = true; 
     $passError = "Please enter password."; 
    } else if(strlen($pass) < 6) { 
     $error = true; 
     $passError = "Password must have atleast 6 characters."; 
    } 

    // password encrypt using SHA256(); 
    $password = hash('sha256', $pass); 

    // if there's no error, continue to signup 
    if(!$error) { 

     $query = "INSERT INTO users(userName,userEmail,userPass) VALUES('$name','$email','$password')"; 
     $res = mysqli_query($query); 

     if ($res) { 
      $errTyp = "success"; 
      $errMSG = "Successfully registered, you may login now"; 
      unset($name); 
      unset($email); 
      unset($pass); 
     } else { 
      $errTyp = "danger"; 
      $errMSG = "Something went wrong, try again later..."; 
     } 

    } 


} 

ための私のコードです:mysqli_query()はCに与えられた少なくとも2つのパラメータ、1を期待?>

mysqli_num_rows()関数は、結果セットの行数を返します。 したがって、行が返されないか、行が正しくない場合はFALSEが戻されます。 mysqli_queryがbooleanを返すと、エラーが返されます。これは、hadクエリが失敗した場合にのみ発生します。

私はこのエラーを修正する方法についてはあまりよく分かりませんし、いくつかのガイダンスが必要でした。

+0

** WARNING **:あなたは、[パラメータ化クエリ]を(使用する必要があります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/)を作成するため、手動エスケープと文字列補間または連結を使用しないでください。 'htmlspecialchars'は、**決して** SQLのための適切なエスケープメソッドではありません。そうでなければ有効なデータをmangleします。 – tadman

+0

**警告**:あなた自身のアクセスコントロールレイヤーを書くのは簡単ではなく、間違ったことをする機会がたくさんあります。 [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

答えて

0

あなたはライン64上のmysqli_query()に接続ハンドルを渡す必要があります:

$res = mysqli_query($dbc, $query); 
関連する問題