2016-07-11 9 views
1

最近、私はPHP/MySQLユーザーサインアップページを作成していますが、関数を呼び出すとエラーが発生するという問題が発生しました。私:PHP/MSQL:ユーザーサインアップページ

"Fatal error: Call to undefined function signUp() in /Users/Ronald/Desktop/PHP/Brighten/admin/signup-method.php on line 65"

私はなぜそれが起こるのだろうか。どのようにそれ enter image description here

:私はこの質問はすでにどこかで回答されている必要があります確信しているが、私はそれを探しにその偉大じゃないので、事前に注意して感謝を払ってくれてありがとう

エラーメッセージ以下のように見えるようにするとします。ユーザーの追加機能でミスを犯している enter image description here

<?php 
$dbhost = 'database_host'; 
$dbuser = 'database_user'; 
$dbpass = 'database_password'; 
$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbuser); 
    if (!$conn){ 
     die('cannot connect to mysql'); 
    } 


    if(isset($_POST['username'])){ 
     $username = $_POST['username']; 
    } 
    if(isset($_POST['password'])){ 
     $password = $_POST['password']; 
    } 
    if(isset($_POST['cpassword'])){ 
     $cpassword = $_POST['cpassword']; 
    } 
    if(isset($_POST['email'])){ 
     $email = $_POST['email']; 
    } 


    function addUser(){ 
     $query = "INSERT INTO websiteusers (user,password,email) VALUES ('$username','$password','$email')"; 
     $data = mysql_query ($query)or die(mysql_error()); 
     if($data) { 
      $result = '<div class="alert alert-success">Thank you, <strong>'.$_POST['name'].'</strong>! You are successfully registered</div>'; 
    } 

    function signUp(){ 
     $query = "SELECT * FROM users WHERE user = '$username' AND pass = '$password'"; 

     $result = mysqli_query($conn, $query); 
      if(!$row = mysqli_fetch_array($result)){ 
       addUser(); 
      }else{ 
      die(" <div class='alert alert-warning'> 
         <strong>Warning!</strong> You're already an registered user! 
        </div>"); 
      } 
     }   
    } 




    if ($_POST["submit"]) { 
     if (!$_POST['username']) { 
      $error="<br />Please enter your name"; 
     } 
     if (!$_POST['password']) { 
      $error.="<br />Please enter your password"; 
     } 
     if (!$_POST['email']) { 
      $error.="<br />Please enter your email"; 
     } 
     if ($password != $cpassword){ 
      $error.= "<br/> Please confirm password is the same"; 
     } 
     if ($error) { 
      $result='<div class="alert alert-danger"> There were error(s)in your form: '.$error.'</div>'; 
     } 
     signUp(); 
    } 


    ?> 
+1

を使用します)。 [Prepared Statements](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) –

+1

Btwを使用してください。コードでは、 "未定義変数"の束を与える必要があります。関数に変数を渡す必要があります。関数の外で(グローバルスコープ内で)変数を定義すると、その変数は関数内で自動的には使用できません。それらは関数の引数として渡す必要があります。 –

+1

'mysql_'と' mysqli_'関数も混在しています。あなたは 'mysqli_connect()'で開き、 'addUser()'関数でmysql_query()を使っています。それらは交換できません。 'mysqli_'をつけてください。 –

答えて

4

。 2つの{開かれているが1つのみ}が閉じています。なぜ今はadduser関数の一部なので、signUpは未定義です。 adduserの中で閉じていない

+0

ああ、それはばかです:Pありがとう!!!! –

+0

心配はいりません。答えとしてマークしてください:) –

-1

括弧はちょうどあなたが[SQLインジェクション](http://php.net/manual/en/security.database.sql-injection.phpに広く開いている次のコード

function addUser(){ 
    $query = "INSERT INTO websiteusers (user,password,email) VALUES ('$username','$password','$email')"; 
    $data = mysql_query ($query)or die(mysql_error()); 
    if($data) { 
     $result = '<div class="alert alert-success">Thank you, <strong>'.$_POST['name'].'</strong>! You are successfully registered</div>'; 
} 





function signUp(){ 
    $query = "SELECT * FROM users WHERE user = '$username' AND pass = '$password'"; 

    $result = mysqli_query($conn, $query); 
     if(!$row = mysqli_fetch_array($result)){ 
      addUser(); 
     }else{ 
     die(" <div class='alert alert-warning'> 
        <strong>Warning!</strong> You're already an registered user! 
       </div>"); 
     } 
    }