2015-04-21 2 views
1

Пытаясь создать страницу регистрации, которая добавляет новых пользователей в базу данных с php, я не могу получить информацию для добавления в базу данных, это, скорее всего, что-то глупо, что я ошибаются или пропустили мой код.страница регистрации с php и mysql не работает

Вот мой код

<?php 
    session_start(); 
?> 

<!DOCTYPE html> 
<html class="no-js"> 
<head> 
     <meta charset="utf-8" /> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge" /> 


    <title></title> 
    <meta name="author" content="" /> 
    <meta name="description" content="" /> 

     <meta name="viewport" content="width=device-width, initial-scale=1" /> 


     <script src="boilerplate/js/vendor/modernizr-2.7.1.min.js"></script> 


    <link rel="stylesheet" type="text/css" href="../css/party.css" media="screen" /> 

    <script type="text/javascript" src="javascript/jquery_min.js"></script> 

    <script type="text/javascript" src="javascript/cookies.js"></script> 


</head> 

<body> 




<?php include 'header.php'; ?> 

<div id="container_register"> 

<div id="content_register"> 

    <h2>Register</h2> 

    <?php 
include "connect.php"; 
if (isset($_POST['formsubmitted'])) { 
    $error = array(); //Declare An Array to store any error message 

    if (empty($_POST['up_username'])) { //if no name has been supplied 
     $error[] = 'Please Enter a name '; //add to array "error" 
    } else { 
     $name = $_POST['up_username']; //else assign it a variable 

    } 

    if (empty($_POST['up_email'])) { 

     $error[] = 'Please Enter your Email '; 

    } else { 

if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", 

      $_POST['up_email'])) { 

      //regular expression for email validation 

      $Email = $_POST['up_email']; 

     } else { 

      $error[] = 'Your EMail Address is invalid '; 

     } 

} 


    if (empty($_POST['up_password'])) { 

     $error[] = 'Please Enter Your Password '; 

    } else { 

     $Password = $_POST['up_password']; 

    } 

if (empty($error)) //send to Database if there's no error ' 



{ // If everything's OK... 



     // Make sure the email address is available: 

     $query_verify_email = "SELECT * FROM users WHERE Email ='$Email'"; 

     $result_verify_email = mysqli_query($dbc, $query_verify_email); 

     if (!$result_verify_email) { //if the Query Failed ,similar to if($result_verify_email==false) 

      echo ' Database Error Occured '; 

     } 
if (mysqli_num_rows($result_verify_email) == 0) { // IF no previous user is using this email . 



      // Create a unique activation code: 


      $query_insert_user = 

       "INSERT INTO `users` (`Username`, `Email`, `Password`) VALUES ('$name', '$Email', '$Password')"; 


$result_insert_user = mysqli_query($dbc, $query_insert_user); 

      if (!$result_insert_user) { 

       echo 'Query Failed '; 

      } 

echo '<div class="success">Thank you for 

registering! </div>'; 

      } else { // If it did not run OK. 
       echo '<div class="errormsgbox">You could not be registered due to a systemdiv>'; 

      } 


     } else { // The email address is not available. 

      echo '<div class="errormsgbox" >That email address has already been registered.</div>'; 

     } 



    } else { //If the "error" array contains error msg , display them 



     echo '<div class="errormsgbox"> <ol>'; 

     foreach ($error as $key => $values) { 



      echo ' <li>' . $values . '</li>'; 



     } 

     echo '</ol></div>'; 



    } 



    mysqli_close($dbc); //Close the DB Connection 

// End of the main Submit conditional. 
    ?> 

     <form name="signup" id="signup" action="register.php" method="post"> 

      <label for="up_username"><span class="required">*</span> Name</label> 
      <input type="text" name="up_username" id="up_username" placeholder="First Surname" /> 

<br> 
      <label for="up_email"><span class="required">*</span> Email</label> 
      <input type="email" name="up_email" id="up_email" placeholder="[email protected]" /> 

<br> 
      <label for="up_password"><span class="required">*</span> Password</label> 
      <input type="password" name="up_password" id="up_password" /> 

<br> 
      <label for="up_password_c"><span class="required">*</span> Confirm Password</label> 
      <input type="password" name="up_password_c" id="up_password_c" /> 


      <div class="div_submit"> 

       <input id="register_submit" type="submit" value="Sign up" /> 
      </div> 

     </form><!--#sign up end--> 

    <p class="required">* Indicates a required field</p> 

</div><!--content div end--> 

</div><!--container div end--> 
+3

Добавить сообщение об ошибках в начало вашего файла (ов) сразу после открытия '

+0

идея о том, что он делает - все будет ошибочно - было бы хорошо ... – MuppetGrinder

+0

Какая часть этого не работает? Вы что-то сделали, чтобы определить, какая часть скрипта терпит неудачу (успешно ли вы получаете информацию POST, успешно подключаетесь к базе данных и т. Д.?)? –

ответ

1

Если условия вы написали всегда Retrun ложь.

Чтобы решить эту проблему Пожалуйста, установите имя атрибута кнопки представить formsubmitted как следующим

<input id="register_submit" name= "formsubmitted" type="submit" value="Sign up" /> 

Поскольку formsubmitted нет в виде значения не установлено для $_POST['formsubmitted'], Так If part из ваших, если оператор никогда не выполняется.

+0

. Спасибо, что она сейчас работает :-) – Rebekah

0

Вот такой сценарий, который я часто использую, не стесняйтесь изменять его по своему усмотрению.

<? 
    if ($_POST['submit']){ 
    $username = $_POST['username']; 
    $password = md5($_POST['password']); 
    $confirm = $_POST['confirm']; 
    $email = $_POST['email']; 

if (!$username || !$password || !$confirm || !$email){ 
    $response = "Please fill in all the boxes"; 
}else{ 

    $check = mysql_num_rows(mysql_query("SELECT * FROM users WHERE username='$username'")); 
    if ($check != 0){ 
     $response = "Username taken, Please choose an alternative"; 
    }else{ 

    $check = mysql_num_rows(mysql_query("SELECT * FROM users WHERE email='$email'")); 
    if ($check != 0){ 
     $response = "This Email has already been registered"; 
    }else{ 


      mysql_query("INSERT INTO `users` (`id`, `username`, `password`, `email`) VALUES ('', '$username', '$password', '$email');"); 
$response = "Account Created"; 

} 
} 
} 
} 

echo "$response"; ?> 
+0

Это не система входа в систему, это трещины на вашем сайте. У вас нет [правильно сбежал] (http://bobby-tables.com/php), поэтому он полон [SQL-ошибок] (http://bobby-tables.com/), вы используете MD5 для пароли, которые являются серьезными ошибками, и вы также используете устаревший супер-ужасный интерфейс 'mysql_query'. Удалите этот ответ. Кроме того, я бы посмотрел, были ли взломаны какие-либо сайты, которые вы развернули, потому что это займет около двух секунд. – tadman

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