PHP - скрипт входа - PullRequest
       1

PHP - скрипт входа

0 голосов
/ 13 декабря 2011

У меня есть скрипт входа в систему, но по какой-то причине он не работает. Я проверил базу данных, форму и переписал скрипт примерно 5 разными способами; однако у них у всех одна и та же проблема, сессия не запускается. Вот код:

<?php 
session_start();

//connect and select DB
mysql_connect ("localhost", "root", "") or die ('Error: ' . mysql_error());
mysql_select_db('usr_info')or die ("cannot select DB :(");

//transfer values sent from form
$usrname = $_POST['usrname'];
$passwrd = $_POST['passwrd'];

//injection protection
$usrname = stripslashes($usrname);
$passwrd = stripslashes($passwrd);
$usrname = mysql_real_escape_string($usrname);
$passwrd = mysql_real_escape_string($passwrd);

$sql = "SELECT * FROM usrs
        WHERE usremail='$usrname'
        and passwrd='".md5($_POST['passwrd'])."'";
$result = mysql_query($sql);

//count the number of rows found with the given info
$count = mysql_num_rows($result);

//the matched result must be equal to 1
if ($count == 1) {
    $_SESSION['u_name'] = $usrname;
    header("Location: ../../landing.php");
    exit();
}
else {
    echo "Wrong Username or Password";
}

это форма, которую я использую:

<div id="login-signup" class="letters2"><a href="javascript:blankfunction()">Login | Signup</a></div>
<div id="point-1" class="point-1"><img src="site-wide/point-1.png" width="405" height="131" />
  <div id="login-form">
  <form id="login" method="POST" action="site-wide/effects/login.php">
    <label for="username"></label>
    <input type="text" name="usrname" id="usrname" value="email" onfocus="clearMe(this);" onblur="unClearMe(this);"/>
    <label for="passwrd"></label>
    <input type="password" name="passwrd" id="passwrd" value="password" onfocus="clearMe(this);" onblur="unClearMe(this);"/>
    <input type="image" src="site-wide/submit.png" name="submit" id="submit" value="login"/>
  </form>

это таблица usrs в моей базе данных:

usrs

Field    Type          Null  Default  Comments  
ID           int(4)        No  
usrfname     varchar(15)   No    
usrlname     varchar(15)   No        
usremail     varchar(45)   No   
passwrd      varchar(8)    No  
usrage       int(3)        No 
usrgender    varchar(7)    No  

Я нашел ответ xD .. проблема была в базе данных. в поле пароля было только 8 символов, тогда как в пароле actall md5 было более 15. Поэтому все, что я сделал, это увеличил количество символов, которое поле может обработать, и альт!

Ответы [ 6 ]

0 голосов
/ 16 сентября 2016

Этот логин уязвим для внедрения SQL, рассмотрите возможность использования PDO.

0 голосов
/ 01 апреля 2015

Я написал скрипт входа в php и поделился с ним статьей ... вот коды:

<?php
include 'inc/config.php';
$err = "Enter Your Email and Password";

$email = filter_input(INPUT_POST,'email',FILTER_SANITIZE_EMAIL);
$password = filter_input(INPUT_POST,'pwd',FILTER_SANITIZE_STRING);

if(isset($email) && isset($password)){ //If Email and Password is Given then Continue
 $q = mysqli_query($con,"SELECT * FROM users WHERE email='$email'");
 if(mysqli_num_rows($q)>0){ //Checking Email from the Database
     $password = sha512($password);
   $u = mysqli_query($con,"SELECT * FROM users WHERE email='$email' AND pwd='$password'");
   if(mysqli_num_rows($u)>0){ //Matching Email and Password from the Database

    //Download the script to get the full code

       $_SESSION['username'] = $data['username'];
       $err = NULL;
       $time = time()+(24*60*60); //Setting time for 24 hours
       setcookie("mct_session",true,$time); //Setting Cookie
   }else{
       $err = "Email and Password doesn't match";
   }
 }else{
  $err = "No User Account Found";
 }
}
if(isset($err)){
    header("Location: index.php?err=".$err); //Login Failed
}else{
    header("Location: dashboard.php"); //Login Success
}
?>

и форма, которую я использовал, была:

      <form class="login-form" action="login.php" method="POST">
         <div class="form-group">
           <label form="email">Email:</label>
           <input type="email" name="email" placeholder="Email Address" class=form-control required/>
         </div>
         <div class="form-group">
           <label form="pwd">Password:</label>
           <input type="password" placeholder="Password" name="pwd" class=form-control required/>
         </div>
         <div class="form-action">
            <div class="col-sm-12"><a href="#" onclick="toggleForm()" class="pull-left font-bree font-2x">Sign Up</a><input type="submit" class="submit_btn btn pull-right" value="Login"/></div>
         </div>
      </form>
<!--Login Form Ends-->

Проверить http://mycodingtricks.com/php/php-login-script-with-example/

0 голосов
/ 13 декабря 2011

если $ count равен 0, то, скорее всего, вы вводите неверные учетные данные. Но просто попробуйте. измените запрос на

SELECT * FROM usrs
    WHERE usrs.usremail = '$usrname'
    and usrs.passwrd = '".md5($passwrd)."'
0 голосов
/ 13 декабря 2011

Прекрасно работает с моей стороны, просто добавив то, что предложил jogesh_p.

Пожалуйста, проверьте, был ли запущен сеанс, прежде чем продолжить с остальной частью сценария. Может ли это быть ошибка? Установите error_reporting так:

<?php
error_reporting(E_ALL);
if (!session_start()) {
    die("The session hasn't been started!");
}

Таким образом, вы можете проверить наличие ошибок перед продолжением.

0 голосов
/ 13 декабря 2011

Возможно, вам следует использовать то же имя переменной пароля здесь:

$sql = "SELECT * FROM usrs WHERE usremail='$usrname' and    passwrd='".md5($_POST['passwrd'])."'";

Кому:

$sql = "SELECT * FROM usrs WHERE usremail='$usrname' and passwrd='".md5($passwrd)."'";

Вы перенаправлены? Или это говорит неправильный пользователь / пароль? Если вы перенаправлены, то кажется, что учетные данные переданы и пользователь прошел проверку подлинности. Вы проверяли сеанс?

0 голосов
/ 13 декабря 2011

Я думаю, вы также должны проверить, что имя пользователя и пароль введены или нет ??

с

if(isset($_POST['submit_button_name'])){
   // then your code
   // and if the both are submitted and
   // match into the database then use session_start();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...