2016-10-12 2 views
-1

я пытаюсь сделать знак в и зарегистрироваться в одной и той же страницы в веб-сайте я имею эту форму в HTML
обработка PHP для более чем одной формы в одной странице

<form name="form1" action="check_login.php" method="post"> 
<input type="email" id= "email" name="email" required="required" placeholder="Email Address" /> 
<input type="password" id= "password" name="password" required="required" placeholder="Password"/> 
<span><input type="checkbox" class="checkbox">Keep me signed in</span> 
<button name="login" type="submit" class="btn btn-default">Login</button> 
</form> 

и форма

<form name="form2" action="check_login.php" method="post"> 
<input type="text" id= "fname" name="fname" required="required" placeholder="First Name"/> 
<input type="text" id= "mname" name="mname" required="required" placeholder="Middle Name"/> 
<input type="text" id= "lname" name="lname" required="required"placeholder="Last Name"/> 
<input type="email" id= "email" name="nemail"required="required" placeholder="Email "/> 
<input type="password" id= "password" name="npassword"required="required" placeholder="Password"/> 
<input type="password" id= "cpassword" name="cpassword"required="required"placeholder="Confirm Password"/> 
<select name='gender' class='col-sm-4'> 
    <option value='male'>male</option> 
    <option value='female'>female</option> 
</select> 
<div class='col-sm-offset-8'> 
<button name="sign_up" type="submit" class="btn btn-default">Sign up</button> </div> 
</form> 


они находятся в одной и той же странице, и как перейти на другую страницу моего веб-сайта, то у меня есть этот код в PHP

if (!empty($_POST['login'])) 
{ 
$email = $_POST['email']; 
$password = $_POST['password']; 
$sql_stmt="select email, password from users where email = '" 
     .$email."' and password ='".$password."'"; 

$result= mysqli_query($connection,$sql_stmt); 
if ($result) 
{ 
    header ("location: index.php"); 
} 
else { 
    header ("location: login.php");  
} 
} 
if(!empty($_POST['sign_up'])) 
{ 
$fname=$_POST['fname']; 
$mname=$_POST['mname']; 
$lname=$_POST['lname']; 
$gender=$_POST['gender']; 
$nemail=$_POST['nemail']; 
$npassword=$_POST['npassword']; 
//if email is already stored ? 
$signup="INSERT INTO `users`(`first_name`, `middle_name`, `last_name`," 
     . " `gender`, `email`, `password`)" 
     . " VALUES ('".$fname."','".$mname."','".$lname."','".$gender. 
     "','".$nemail."','".$npassword."')"; 

$result1= mysqli_query($connection, $signup); 
if ($result1) 
{ 

    header ("location: index.php"); 
} 
else { 
    header ("location: login.php");  
} 
} 

но навигацию к индексу никогда не бывает!

+3

** никогда не хранить простые текстовые пароли ** Пожалуйста, используйте РНР [встроенные функции] (http://jayblanchard.net/proper_password_hashing_with_PHP.html) для обработки пароля безопасность. Если вы используете версию PHP менее 5.5, вы можете использовать 'password_hash()' [пакет совместимости] (https://github.com/ircmaxell/password_compat). Удостоверьтесь, что вы *** [не избегаете паролей] (http://stackoverflow.com/q/36628418/1011527) *** или используйте любой другой механизм очистки для них перед хэшированием. Выполнение этого * изменяет * пароль и вызывает ненужное дополнительное кодирование. –

+2

[Little Bobby] (http://bobby-tables.com/) говорит, что *** [ваш скрипт подвержен риску инъекций SQL.] (Http://stackoverflow.com/questions/60174/how-can- i-prevent-sql-injection-in-php) *** Узнайте о [подготовленных] (http://en.wikipedia.org/wiki/Prepared_statement) операторах для [MySQLi] (http://php.net/manual /en/mysqli.quickstart.prepared-statements.php). Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! [Не верьте?] (Http://stackoverflow.com/q/38297105/1011527) –

+2

От @tadman: ПРЕДУПРЕЖДЕНИЕ. Написание собственного уровня контроля доступа непросто и есть много возможностей, чтобы заставить его серьезно ошибиться. Пожалуйста, не пишите свою собственную систему аутентификации, если какая-либо современная инфраструктура разработки, такая как Laravel, поставляется с надежной системой аутентификации. –

ответ

0

Первые вещи сначала вам нужно подтвердить свой ввод данных пользователем перед сохранением в БД, а также вы должны хэширования паролей, вы можете прочитать больше о хэширования here, а также прочитать FAQ here

также прочитать о подготовленных заявлений используют ли у MySQLi или PDO чтения here:

<?php 

if (isset($_POST['login'])) { 

     $email = userInput($_POST['email']); 
     $password = userInput($_POST['password']); // verify your password you can learn 



     $sql_stmt = $connection->prepare("SELECT email,password FROM users where email =? "); 
     $sql_stmt->bindValue(1, $email); 
     $sql_stmt->execute(); 
     $results = $sql_stmt->fetchall(PDO::FETCH_ASSOC); 

     if (count($results > 0 && password_verify($password, $results['password']))) { 
       $_SESSION['username'] = $results['email']; 
       header("location:page"); //Login details are correct redirect to page after correct 

     } else { //email and password do not match 

       //Return your error message 
     } 

} 


if (isset($_POST['sign_up'])) { 


     $fname  = userInput($_POST['fname']); 
     $mname  = userInput($_POST['mname']); 
     $lname  = userInput($_POST['lname']); 
     $gender = userInput($_POST['gender']); 
     $nemail = userInput($_POST['nemail']); 
     $npassword = userInput(password_hash($_POST['npassword'], PASSWORD_DEFAULT)); 



     // check if email already stored/ 

     $sql_stmt = $connection->prepare("SELECT email from users where email = ?"); 
     $sql_stmt->bindValue(1, $nemail); 
     $sql_stmt->execute(); 

     $results = $sql_stmt->fetchall(PDO::FETCH_ASSOC); 
     if (count($results) > 0) { 

       //Email exist print message 

     } else { 

       //email does not exist register the user 

       $sql_stmt = $connection->prepare("INSERT INTO users (first_name, middle_name, last_name,gender, email, password) value(?,?,?,?,?,?) "); 
       $sql_stmt->execute(array(
         1 => $fname, 
         2 => $mname, 
         3 => $last_name, 
         4 => $gender, 
         5 => $nemail, 
         6 => $npassword 
       )); 


       //Print succcess message; 

       header(); // redirect where u want 


     } 



} 


function userInput($data) 
{ 

     $data = trim($data); 
     $data = stripcslashes($data); 
     $data = htmlspecialchars($data); 

     return $data; 

} 
?> 
Смежные вопросы