2017-09-20 3 views
3

Kommen wir direkt zu dem Problem. Ich habe diese Form:Weird Undefined Variable Error

<?php 
if (isset($_POST['submit'])){ 
    $username = $_POST['uname']; 
    $email = $_POST['email']; 
    $password = $_POST['pass']; 
    $groups = $_POST['groups']; 
    if($groups == "Main Admin"){ 
     $level = 1; 
    }else if($groups == "Administrator"){ 
     $level = 2; 
    }else if($groups == "Content Creator"){ 
     $level = 3; 
    }else if($groups == "Social Media Manager"){ 
     $level = 4; 
    }else{ 
     $level = 5; 
    } 
    if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) { 
     $notice['email_validation'] = "The email that you have entered is not a valid one"; 
    }else{ 
     $registration = new Register(); 
     $notice = $registration->CheckUname($username,$email,$password,$groups‌​,$level); 
    } 
} 
?> 
<div class="content-wrapper"> 
    <section class="content-header"> 
     <h1> 
      Add New Admin 
      <small>You can add new admin here</small> 
     </h1> 
     <ol class="breadcrumb"> 
      <li class="active">addnewadmin.php</li> 
     </ol> 
    </section> 
    <section class="content"> 
     <div class="row"> 
      <div class="col-md-6"> 
       <div class="box box-primary"> 
        <div class="box-header with-border"> 
         <h3 class="box-title">Required Information</h3> 
        </div> 
        <?php 
        if(isset($notice['email_validation'])) { 
         echo " 
          <div class='alert alert-danger'> 
           <strong>Hey!</strong> ".$notice['email_validation'].". 
          </div> 
         "; 
        } 
        if(isset($notice['username_exists'])) { 
         echo " 
          <div class='alert alert-danger'> 
           <strong>Hey!</strong> ".$notice['username_exists'].". 
          </div> 
         "; 
        } 
        if(isset($notice['email_exists'])) { 
         echo " 
          <div class='alert alert-danger'> 
           <strong>Hey!</strong> ".$notice['email_exists'].". 
          </div> 
         "; 
        } 
        if(isset($notice['success_message'])) { 
         echo " 
          <div class='alert alert-success'> 
           <strong>Hey!</strong> ".$notice['success_message'].". 
          </div> 
         "; 
        } 
        ?> 
        <form role="form" method="POST" action=""> 
         <div class="box-body"> 
          <div class="form-group"> 
           <label>User name</label> 
           <input type="text" class="form-control" placeholder="Enter username" name="uname" required> 
          </div> 
          <div class="form-group"> 
           <label for="exampleInputEmail1">Email address</label> 
           <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Enter email" name="email" required> 
          </div> 
          <div class="form-group"> 
           <label for="exampleInputPassword1">Temporary password</label> 
           <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Enter password" name="pass" required> 
          </div> 
          <div class="form-group"> 
           <label>Group admin</label> 
           <select class="form-control" name="groups"> 
            <option value="Main Admin">Main Admin</option> 
            <option value="Administrator">Administrator</option> 
            <option value="Content Creator">Content Creator</option> 
            <option value="Social Media Manager">Social Media Manager</option> 
            <option value="Analyst">Analyst</option> 
           </select> 
          </div> 
         </div> 
         <div class="box-footer"> 
          Visit <a href="https://zite.pouyavagefi.com/documentation/types.php">admin types</a> documentation to know the differences between each admin. 
         </div> 
         <div class="box-footer"> 
          <button name="submit" type="submit" class="btn btn-primary">Submit</button> 
         </div> 
        </form> 
       </div> 
      </div> 
     </div> 
    </section> 
</div> 

Wie Sie sehen, ich habe Aktionsdatei direkt an der Spitze hinzugefügt und alles sieht gut aus und groß. Aber das Problem ist ich diese seltsame Fehlermeldung erhalten:

Undefined variable: Gruppen auf der Leitung 22

Und das ist Zeile 22:

$notice = $registration->CheckUname($username,$email,$password,$groups‌​,$level);

Es ist sehr seltsam aber, weil es bereits passiert hat durch die POST Methode und hat Wert.

Also wenn Sie wissen, warum bekomme ich das, lass es mich wissen .. danke!

AUCH: Wenn Sie Register.class.php einen Blick auf die Klasse nehmen müssen, die ich früher verwendet haben, können Sie es hier finden:

<?php 
class Register 
{ 
    protected $notice = array(); 
    private $db; 
    public function __construct() 
    { 
     $this->db = new Connection(); 
     $this->db = $this->db->dbConnect(); 
    } 
    public function CheckUname($username,$email,$password,$groups,$level) 
    { 
     if(!empty($username)&&!empty($email)&&!empty($password)&&!empty($groups)&&!empty($level)) 
     { 
      $chk1 = $this->db->prepare("SELECT user_name FROM admins WHERE user_name = ?"); 
      $chk1->bindParam(1,$username); 
      $chk1->execute(); 
      if($chk1->rowCount() == 1) 
      { 
       $notice['username_exists'] = "Try different username"; 
       return $this->notice; 
      }else{ 
       $chk2 = $this->db->prepare("SELECT email_address FROM admins WHERE email_address = ?"); 
       $chk2->bindParam(1,$email); 
       $chk2->execute(); 
       if($chk2->rowCount() == 1) 
       { 
        $notice['email_exists'] = "The email address that you have entered is already exists in database"; 
        return $this->notice; 
       }else{ 
        $this->NewAdmin($username,$email,$password,$groups,$level); 
        $notice['success_message'] = "New admin was successfully added"; 
        return $this->notice; 
       } 
      } 
     } 
    } 
    public function NewAdmin($username,$email,$password,$groups,$level) 
    { 
     if(!empty($username)&&!empty($email)&&!empty($password)&&!empty($groups)&&!empty($level)) 
     { 
      $reg = $this->db->prepare("INSERT INTO admins (user_name, email_address, password_hash, group_admin, date_joined, admin_level) VALUES (?, ?, ?, ?, NOW(), ?)"); 
      $reg->bindParam(1,$username); 
      $reg->bindParam(2,$email); 
      $reg->bindParam(3,$password); 
      $reg->bindParam(4,$groups); 
      $reg->bindParam(5,$level); 
      $reg->execute(); 
     } 
    } 
    public function getNotice() 
    { 
     return $this->notice; 
    } 
} 
?> 
+3

Ist diese $ _POST [ 'Gruppen'] in der Tat einen Wert hat? Der Zugriff auf Array-Indizes, ohne sicherzustellen, dass sie existieren, könnte eine Warnung über einen nicht definierten Index auslösen. Versuchen Sie, diese Zeile zu ändern $ groups = $ _POST ['groups']; zu $ groups = isset ($ _ POST ['groups'])? $ _POST ['Gruppen']: null; –

+2

Führen Sie einen var_dump ($ _ POST) aus; versuchen Sie auch, alle Ihre Variablen zu initialisieren, bevor Sie die Pfostenwerte zuweisen – Akintunde007

+0

können Sie uns ursprünglichen Fehler zeigen –

Antwort

0

Wie wäre es eine Möglichkeit um zu tun. Ihr Code wie folgt ..

$registration = new Register(); 

$dataArray = array(
    'username'=>$username, 
    'email'=>$email, 
    'password'=>$password, 
    'groups‌'=>$groups‌, 
    'level'=>$level 
); 

$notice = $registration->CheckUname($dataArray); 

Und Funktion wie diese

public function CheckUname($dataArray)