2015-06-02 3 views
0

Здравствуйте, я работаю над созданием страницы регистрации пользователя. Я считаю, что все пробовал, когда я пытаюсь проверить страницу регистрации, он просто перезагружает одну и ту же страницу. когда я нажимаю кнопку отправки и не заходит в мою базу данных и не показывает, что «ваша учетная запись была создана». Я даже пытался использовать устаревший код MySQL, но он тоже не работает. Имейте в виду, что это всего лишь набор костей без костей и не был разработан с использованием CSS вообще. вот код ...Ошибка регистрации страницы pdo при попытке зарегистрировать образец пользователя

<?php 
include("/scripts/connectionfile.php"); 

if(isset($_POST['submit'])) { 
$email = $_POST ['email']; 
$username = $_POST['username']; 
$password = md5($_POST['password']."ALS52KAO089"); 
$confpassword = md5($_POST['conpassword']."ALS52KAO089"); 
} 
    if(isset($email, $username, $password, $confPassword)){ 
     if(strstr($email, "@")){ 
      if($password == $confPassword){ 
       $query = $dbc->prepare("SELECT * FROM users WHERE username = ? OR email = ?"); 
       $query = $query->execute(array(
        $username, 
        $email 
       )); 
       $count = mysql_num_rows($query); 
       if($count == '0'){ 
        $query = $dbc->prepare("INSERT INTO users SET username = ?, email = ?, password = ?"); 
        $query = $query->execute(array(
         $username, 
         $email, 
         $password 
         )); 
        if($query){ 
          echo "Your account has been created, you may now login!"; 

         } 

       }else{ 
        echo "A user already exist with that name."; 
       } 
      }else{ 
       echo "Your passwords do not match!"; 
      } 
      }else{ 
       echo "Invalid email address!"; 
      } 
     } 


?> 
<form action="" method="POST"> 
    <table> 

<tr> 
    <td>Username:</td> 
    <td><input type="text" name="username"></td> 
</tr> 

<tr> 
    <td>Email:</td> 
    <td><Input type="text" name="email"></td> 
</tr> 

<tr> 
    <td>Password:</td> 
    <td><Input type="password" name="password"></td> 
</tr> 

<tr> 
    <td>Confirm Password:</td> 
    <td><Input type="password" name="conpassword"></td> 
</tr> 
</table> 
<input type="submit" name="submit" value="Register"> 
</form> 

Вот мой код подключения

 <?php 
$user ="root"; 
$pass = ""; 
$dbc = new PDO("mysql:host=localhost;dbname=users", $user, $pass); 


?> 
+1

Вы бы получить больше людей, желающих помочь, если вы вставляли свой код прямо в свой пост, а не ссылались на скриншот. –

+0

Я извиняюсь, чрезвычайно новичок на сайте, но я получил его отформатированный прямо сейчас, поэтому, если вы можете помочь, я был бы умен. –

+0

Что находится на вашем 'connectionfile.php'? – Rasclatt

ответ

0

Попробуйте изменения я описанные ниже:

<?php 
include("/scripts/connectionfile.php"); 

if(isset($_POST['submit'])) { 
     function get_user_count($username = false,$email = false,$con = false) 
      { 
       if($username != false && $email != false && $con != false) { 
         $query = $con->prepare("SELECT COUNT(*) as count FROM users WHERE username = ? OR email = ?"); 
         $query->execute(array($username,$email)); 
         $result = $query->fetch(PDO::FETCH_ASSOC); 

         if($result['count'] == 1) 
          return true; 
        } 

       return false; 
      } 

     // Use a better validate 
     $creds['email']   = (filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))? $_POST['email']:false; 
     // Check it's not empty 
     $creds['username']  = (!empty($_POST['username']))? $_POST['username']:false; 
     // You should be using a proper encryption. md5 is not good enough, even with a salt 
     $creds['password']  = (!empty($_POST['password']))? md5($_POST['password']."ALS52KAO089"):false; 
     $creds['conpassword'] = (!empty($_POST['conpassword']))? md5($_POST['conpassword']."ALS52KAO089"):false; 

     if(!in_array(false,$creds)) { 
       // You were trying to match $conpassword and $conPassword 
       // Notice the P in confp and confP 
       if($creds['password'] == $creds['conpassword']){ 
        if(get_user_count($creds['username'],$creds['email'],$dbc) == false){ 
         // Your statement is a mix of insert and update 
         $query = $dbc->prepare("INSERT INTO users (`username`,`email`,`password`) VALUES (?,?,?)"); 
         // Swicht $query to $result 
         $result = $query->execute(array($creds['username'],$creds['email'],$creds['password'])); 

         if($result) 
          $error = "Your account has been created, you may now login!"; 

        }else 
         $error = "A user already exist with that name."; 
       }else 
        $error = "Your passwords do not match!"; 

     }else 
      $error = "Invalid email address!"; 

     echo $error; 
    } 
?> 

<form action="" method="POST"> 
    <table> 
     <tr> 
      <td>Username:</td> 
      <td><input type="text" name="username"></td> 
     </tr> 
     <tr> 
      <td>Email:</td> 
      <td><Input type="text" name="email"></td> 
     </tr> 
     <tr> 
      <td>Password:</td> 
      <td><Input type="password" name="password"></td> 
     </tr> 
     <tr> 
      <td>Confirm Password:</td> 
      <td><Input type="password" name="conpassword"></td> 
     </tr> 
    </table> 
    <input type="submit" name="submit" value="Register"> 
</form> 
+0

Хорошо, я работал с кодом, который вы мне давали, и переделал мой, но теперь я получаю «недействительный адрес электронной почты», когда я пытаюсь использовать пример пользователя, и я использую правильное письмо. –

+0

Я пересмотрел мой немного с тех пор, как вы скопировали его – Rasclatt

+0

Извините, я просто понял, что у меня было несколько вопросов с копией. Попробуй. – Rasclatt

Смежные вопросы