2014-10-30 105 views
0

好吧,确实很奇怪......我工作的一个非常基本的注册脚本,但它返回:多“未定义指数”错误

公告:未定义的索引:在 Ç用户名:\ XAMPP \ htdocs \ Zephryte \ app \ classes \ users.class.php on line 42

注意:未定义的索引:电子邮件地址 C:\ xampp \ htdocs \ Zephryte \ app \ classes \ users.class.php在行46

说明:未定义索引:电子邮件地址 C:\ xampp \ htdocs \ Zephryte \ app \ classe小号\ users.class.php上线50

说明:未定义指数:emailconfirm在 C:\ XAMPP \ htdocs中\ Zephryte \应用\类\上线50 users.class.php

说明:未定义指数:passwordp在 C:\ XAMPP \ htdocs中\ Zephryte \应用\类\上线users.class.php 54

说明:未定义指数:passwordcomfirm在 C:\ XAMPP \ htdocs中\ Zephryte \应用\类\ users.class.php 54行

注意:未定义的索引:用户名在 C:\ XAMPP \ htdocs中\ Zephryte \应用\类\上线users.class.php 58

说明:未定义指数:passwordp在 C:\ XAMPP \ htdocs中\ Zephryte \应用\类\上线users.class.php 62

说明:未定义指数:passwordp在 C:\ XAMPP \ htdocs中\ Zephryte \应用\类\上线users.class.php 66

说明:未定义指数:用户名在 C:\ XAMPP \ htdocs \ Zephryte \ app \ classes \ users.class.php on line 70

这是相当不错的怪异,因为我命名所有输入字段对应的变量:

<input type="text" name="username" size="45" placeholder="Username..." class="input" style="width: 98%;" /> 
<input type="text" name="email" size="45" placeholder="E-Mailadres..." class="input" style="width: 98%;" /> 

等等......难道我在这里错过了什么?

编辑:

由于要求所有相关的PHP & HTML代码:

HTML:

<form action="index.php?p=register" method="post" autocomplete="off"> 
     <table align="center" cellpadding="8" style="width: 100%;"> 
    <tr> 
    <td style="width: 100%;"> 
    <input type="text" name="username" size="45" placeholder="Username..." class="input" style="width: 98%;" /> 
    </td> 
    </tr> 
    <tr> 
    <td style="width: 100%;"> 
    <input type="text" name="email" size="45" placeholder="E-Mailadres..." class="input" style="width: 98%;" /> 
    </td> 
    </tr> 
    <tr> 
    <td style="width: 100%;"> 
    <input type="text" name="emailconfirm" size="45" placeholder="E-Mailadres bevestigen..." class="input" style="width: 98%;" /> 
    </td> 
    </tr> 
    <tr> 
    </tr> 
    <tr> 
    <td style="width: 100%;"> 
    <input type="password" name="passwordp" size="45" placeholder="Wachtwoord..." class="input" style="width: 98%;" /> 
    </td> 
    </tr> 
    <tr> 
    </tr> 
    <tr> 
    <td width="100%"> 
    <input type="password" name="passwordconfirm" size="45" placeholder="Wachtwoord bevestigen..." class="input" style="width: 98%;" /> 
    </td> 
    </tr> 
    <tr> 
    <td style="width: 100%;"> 
    <input type="text" name="skype" size="45" placeholder="Skype..." class="input" style="width: 98%;" /> 
    </td> 
    </tr> 
    <tr> 
    </tr> 
    <td width="30%"> 
    <input type="submit" name="register" value="Registreren" class="button small orange" style="width: 100%;"> 
    </td> 
    </table> 
    </form> 

PHP:

public function register() 
    { 
     $query = $this->db->conn->prepare('INSERT INTO ht_users VALUES "", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?'); //22 
     $errors = array(); 
     if (strlen($_POST['username']) < 3) 
     { 
      $errors[] = "Je gebruikersnaam is niet geldig"; 
     } 
     if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) 
     { 
      $errors[] = "Je emailadres is niet geldig"; 
     } 
     if ($_POST['email'] !== $_POST['emailconfirm']) 
     { 
      $errors[] = 'Je emailadressen zijn niet \'t zelfde!'; 
     } 
     if ($_POST['passwordp'] !== $_POST['passwordcomfirm']) 
     { 
      $errors[] = 'Je wachtwoorden zijn niet \'t zelfde'; 
     } 
     if (!ctype_graph($_POST['username'])) 
     { 
      $errors[] = 'Je gebruikersnaam bezit ongeldige tekens!'; 
     } 
     if (strlen($_POST['passwordp']) < 6) 
     { 
      $errors[] = 'Je wachtwoord moet op z\'n minst 6 tekens lang zijn'; 
     } 
     if (strlen($_POST['passwordp']) > 20) 
     { 
      $errors[] = 'Je wachtwoord mag maximaal 20 tekens bevatten!'; 
     } 
     if ($this->checkUsername($_POST['username'])) 
     { 
      $errors[] = 'Oeps! Er bestaat al een account op deze Habbonaam!<br>Ben je misschien je <a href="?p=lostpass">wachtwoord vergeten</a>?'; 
     } 
     if ($this->checkEmail($_POST['email'])) 
     { 
      $errors[] = 'Oeps! Er bestaat al een account op dit emailadres!<br>Ben je misschien je <a href="?p=lostpass">wachtwoord vergeten</a>?'; 
     } 
     if (count($errors) > 0) 
     { 
      echo 'FUCK'; 
      //return $errors; 
      exit(); 
     } 
     $password = md5($_POST['passwordp']); 
     $data = date('d-M-Y'); 
     $ipAddress = $_SERVER['REMOTE_ADDR']; 
     if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { 
      $ipAddress = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])); 
     } 

     $query->bind_param('ssssssssssssssssssssss', $data, $username, $password, NULL, $email, $this->generateCode($username), $ipAddress, $ipAddress, $data, $data, 1, NULL, NULL, 0, 0, 1, 1, 0, $skype, 0, 0, NULL); 
     $query->execute(); 
     $query->close(); 
     $this->login($username, $passwordp); 
    } 
+0

检查提交前是否设置了它们。 – Mihai 2014-10-30 17:16:36

+0

在访问 – MH2K9 2014-10-30 17:17:35

+0

之前,还可以使用'isset()'请包含所有相关的HTML和PHP代码,包括您的'

'标签和引发错误的PHP代码。 – showdev 2014-10-30 17:17:45

回答

0

添加isset到PHP:

public function register() 
{ 
    $query = $this->db->conn->prepare('INSERT INTO ht_users VALUES "", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?'); //22 
    $errors = array(); 
    if (!isset($_POST['username']) || strlen($_POST['username']) < 3) 
    { 
     $errors[] = "Je gebruikersnaam is niet geldig"; 
    } 
    if (!isset($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) 
    { 
     $errors[] = "Je emailadres is niet geldig"; 
    } 
    if (!isset($_POST['email']) || !isset($_POST['emailconfirm']) || $_POST['email'] !== $_POST['emailconfirm']) 
    { 
     $errors[] = 'Je emailadressen zijn niet \'t zelfde!'; 
    } 
    if (!isset($_POST['passwordp']) || !isset($_POST['passwordcomfirm']) || $_POST['passwordp'] !== $_POST['passwordcomfirm']) 
    { 
     $errors[] = 'Je wachtwoorden zijn niet \'t zelfde'; 
    } 
    if (!isset($_POST['username']) || !ctype_graph($_POST['username'])) 
    { 
     $errors[] = 'Je gebruikersnaam bezit ongeldige tekens!'; 
    } 
    if (!isset($_POST['passwordp']) || strlen($_POST['passwordp']) < 6) 
    { 
     $errors[] = 'Je wachtwoord moet op z\'n minst 6 tekens lang zijn'; 
    } 
    if (!isset($_POST['passwordp']) || strlen($_POST['passwordp']) > 20) 
    { 
     $errors[] = 'Je wachtwoord mag maximaal 20 tekens bevatten!'; 
    } 
    if (!isset($_POST['username']) || $this->checkUsername($_POST['username'])) 
    { 
     $errors[] = 'Oeps! Er bestaat al een account op deze Habbonaam!<br>Ben je misschien je <a href="?p=lostpass">wachtwoord vergeten</a>?'; 
    } 
    if (!isset($_POST['email']) || $this->checkEmail($_POST['email'])) 
    { 
     $errors[] = 'Oeps! Er bestaat al een account op dit emailadres!<br>Ben je misschien je <a href="?p=lostpass">wachtwoord vergeten</a>?'; 
    } 
    if (count($errors) > 0) 
    { 
     echo 'NEUKEN'; 
     //return $errors; 
     exit(); 
    } 
    $password = md5($_POST['passwordp']); 
    $data = date('d-M-Y'); 
    $ipAddress = $_SERVER['REMOTE_ADDR']; 
    if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)) { 
     $ipAddress = array_pop(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])); 
    } 

    $query->bind_param('ssssssssssssssssssssss', $data, $username, $password, NULL, $email, $this->generateCode($username), $ipAddress, $ipAddress, $data, $data, 1, NULL, NULL, 0, 0, 1, 1, 0, $skype, 0, 0, NULL); 
    $query->execute(); 
    $query->close(); 
    $this->login($username, $passwordp); 
}