2017-11-15 7 views
0

私はエラー致命的なエラーを受信し続ける私は正しいコードを使用するが、それでも、これは偽

<?php 
session_start(); 

$connection = parse_ini_file('config.ini'); 

try{ 
    $db_con = new PDO("mysql:host={$connection['host']}; dbname={$connection['dbname']}", $connection['username'], $connection['password']); 
    $db_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 

catch(PDOException $e){ 
    echo $e->getMessage(); 
} 


include_once 'class.user.php'; 
$user = new USER($db_con); 
?> 

をdb.php

SIGNUP.PHP/HTML 
<?php 
    require_once("connections/db.php"); 

    $error = array(); 
    if($user->is_loggedin()) 
    { 
     $user->redirect('index.php'); 
    } 

    if(isset($_POST['signup-btn'])) 
    { 
     $username = $_POST['signup-username']; 
     $password = $_POST['signup-password']; 
     $email = $_POST['signup-email']; 

     if($user='') 
     { 
      $error[] = "Please enter a username"; 
     } 
     else if($pass='') 
     { 
      $error[] = "Please enter a password"; 
     } 
     else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) 
     { 
      $error[] = "Please enter a valid email address"; 
     } 
     else 
    { 
     try 
     { 
      if($user->register($username, $password, $email)) 
      { 
       echo "registered"; 
      } 
    } 
    catch(PDOException $e) 
    { 
     echo $e->getMessage(); 
    } 
    } 
    } 
    ?> 

class.user.php

<?php 
class USER{ 

    private $db; 

    function __construct($db_con) 
    { 
     $this->db = $db_con; 
    } 

    public function register($username,$password,$email) 
    { 
     try 
     { 
      $protected_password = password_hash($upass, PASSWORD_DEFAULT); 
      $stmt = $this->db->prepare("INSERT INTO users(username,password,email) 
      VALUES(:username, :password, :email)"); 

      $stmt->bindparam(":username", $username); 
      $stmt->bindparam(":password", $protected_password); 
      $stmt->bindparam(":email", $email); 
      $stmt->execute(); 

      return $stmt; 
     } 

     catch(PDOException $e) 
     { 
      echo $e->getMessage(); 
     } 
    } 

    public function is_loggedin() 
    { 
     if (isset($_SESSION['user_session'])) 
     { 
      return true; 
     } 
    } 

    public function redirect($url) 
    { 
     header("Location: $url"); 
    } 

    public function logout() 
    { 
     session_destroy(); 
     unset($_SESSION['user_session']); 
     return true; 
    } 
} 


?> 

を返す:メンバーにコール関数レジスタ()は、C:\ xampp \ we \ signup.phpの32行目の文字列にあります。

私はPDOにとって全く新しいです。なぜこれが動作していないのかわかりません。 できるだけコードを変更しようとしましたが、このエラーは変わりません。私はそれも私が見落としている単純なばかげた問題だと確信しています。

答えて

1

は、私たちは、その後、私は平等のチェックは、この変数($username == ''?)で発生することを意図したが、代わりに$userが空の文字列に設定されていると仮定し、フォーム

$username = $_POST['signup-username']; 

から$usernameを設定して起動します。

if($user='') 
{ 
    $error[] = "Please enter a username"; 
} 

その後、$user->register()が呼び出され、そして$userはまだ文字列の代わりに、あなたのクラスUSERのインスタンスです。

他の場所での等価チェックを行うことを意図した変数割り当てを行わないように注意してください。私はいつもそれをする。

if($user='') 
{ 
    $error[] = "Please enter a username"; 
} 
else if($pass='') // should this be $password == ''? 
{ 
    $error[] = "Please enter a password"; 
} 
+1

ありがとう、私はこれらの間違いで愚かです。 –

関連する問題