2015-11-21 4 views
0

Я создал систему регистрации для своего сайта, но она не работает. Когда я нажимаю кнопку «Зарегистрироваться», он переводит меня на страницу процесса и дает мне оператор else, но информация поступает в базу данных, но дает мне инструкции else. Кроме того, когда информация поступает ИНТ базы данных более чем один пользователь выходит вУстранение формы регистрации php

signup.php:.

<html> 
<head> 
<link rel="stylesheet" type="text/css" href="css.css"> 
<title>Sign Up</title> 
</head> 
    <body bgcolor="#E6E6FA"> 

    <h2 style="text-align: right"><b style="font-size: 25px">Sign Up Below</b></h2> 
<form name="registration" method="post" action="process2.php"> 
<p align="right"><input type="text" name="username" size="35" id="Username" placeholder="User Name" /></p> 
<br></br> 
<p align="right"><input type="password" name="password" size="35" id="Password" placeholder="Password" /></p> 
<br></br> 
<p align="right"><input type="password" name="password2" size="35" id="Password2" placeholder="Confirm Password" /></p> 
<br></br> 
<p align="right"><input type="text" name="email" size="35" id="Email" placeholder="E-mail" /></p> 
<p align="right"><input type="submit" name="submit" value="submit"></p> 
</form> 

<h3 style="font-size: 20px"><a href="register.php">Go Back To Home Screen</a></h3> 
</body> 
</html> 

process2.php:

<?php 
    include("db.php"); 

    if (isset($_POST['submit'])) { 
    if ($_POST['password'] == $_POST['password2']) { 
    $username = $_POST['username']; 
    $pw = $_POST['password']; 
    $pw2 = $_POST['password2']; 
    $email = $_POST['email']; 

    $pw = password_hash($pw, PASSWORD_BCRYPT, array('cost' => 10)); 
    $pw2 = password_hash($pw2, PASSWORD_BCRYPT, array('cost' => 8)); 

    $sql = "INSERT into users VALUES(null, '$username', '$pw', '$pw2', '$email')"; 
    mysqli_query($conn, $sql); 
    } 

if($username > 0){ 
    echo"This username is in use"; 
    } else { 

} 
} 
?> 
+2

'if ($ username> 0) {' ?? –

+0

Это означает, что если имя пользователя используется, им нужно выбрать другой. –

+0

, который выбран именно там, где именно? –

ответ

0

Это предложение, и я уверен, орел смотрел на Фред-II- будет обнаружить в нем ошибку, но я считаю, что это справиться с МФС и полностью вернулся на Родину

 <?php 
     include("db.php"); 

     if (isset($_POST['submit'])) { 
       if ($_POST['password'] == $_POST['password2']) { 
        $username = $_POST['username']; 
        $pw = $_POST['password']; 
        $pw2 = $_POST['password2']; 
        $email = $_POST['email']; 

      // validate and sanitize all of these inputs 
      // and see that they are not blank at the same time 

      // Do your MySql here to find the $username and 
      // bring out result of find in $username_result 

         if($username_result > 0){ 
         $return_message = "This username is in use"; 
         include("register.php"); 
         exit;       // exit; // or send them back to registration page 
         } else { 
         // it is not in use so put it in 
         $pw = password_hash($pw, PASSWORD_BCRYPT, array('cost' => 10)); 
         $pw2 = password_hash($pw2, PASSWORD_BCRYPT, array('cost' => 8)); 

         $sql = "INSERT into users VALUES(null, '$username', '$pw', '$pw2', '$email')"; 

          if(mysqli_query($conn, $sql)){         
          // if insert checked as successful echo username and password saved successfully 
          $return_message = "New user name and password created successfully.";  echo $return_message; // stays on the same page 
          }else{ 
          $return_message = "Sorry there has been an error, please try again."; // and send them back to registration page 
          include("register.php"); 
          exit; 
          } 
         } 
       }else{ 
       $return_message = "The passwords do not match. Please re-enter them."; // and send them back to registration page 
       include("register.php"); 
       exit; 
       }  
     } 
     ?> 

Не забудьте закрыть соединение и дезинформировать все, что было отправлено из вашей формы, прежде чем оно будет находиться рядом с вашей базой данных.

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

Когда включена страница регистрации, вы можете поместить на нее ошибку и сохранить значения в текстовых полях, если хотите - чтобы они могли редактировать то, что они вставляли. Фиксирование длины может дать хакерам меньше свободы, чтобы представить гадости. Таким образом, вместо эхо-сообщения вы можете сделать это $return_message = и иметь эхо на странице регистрации сообщений. echo $return_message;, поскольку значение по-прежнему доступно для этой страницы без необходимости его повторной публикации до тех пор, пока оно не будет исправлено и повторно отправлено пользователем.

  <p align="right"><input type="text" name="username" size="35" id="Username" placeholder="User Name" value="<?php echo $username;?>" maxlength="30" /></p> 
+0

Спасибо. Как я дезинфицирую? –

+0

Вы хотите избавиться от неприятных персонажей - обычно это делается с помощью preg_replace(); и избавиться от кода, который может быть выполнен как DROP TABLE и т. д. Мне понравилась функция http://stackoverflow.com/users/5562424/t-somers на http://stackoverflow.com/questions/33711391/php-code-losing- его-values-when-i-hit-submit/33715406 # 33715406, но он не включает одно из следующих значений: Текущее мышление заключается в том, что с помощью подготовленных операторов или mysqli_real_escape_string (mysqli not mysql) для этого. Это была интересная лекция на тему https://www.youtube.com/watch?v=etPK7BBp-eQ Google. – Steve

+0

Проверка подлинности электронной почты - это другая проблема http://php.net/manual/en/filter.examples.sanitization.php, а некоторые используют preg_replace() или preg_match() для этого также http://stackoverflow.com/questions/4914062/php-preg-replace-pattern-string-sanitization Вы также можете использовать http://php.net/manual/en/function.checkdnsrr.php (по-разному для серверов Windows), чтобы узнать, существует ли имя хоста и разделите электронное письмо на @, чтобы проверить/перемотать что-нибудь слишком ужасное в названии. Много хороших вещей на StackOverflow об этой санитации и валидации многими более квалифицированными, чем я должен комментировать. – Steve

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