Problema parola

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

chvalentin14
New Member
Mesaje: 2
Membru din: Sâm Oct 14, 2017 2:27 pm

Problema parola

Mesajde chvalentin14 » Sâm Oct 21, 2017 10:57 pm

Salutare ! Cand apas butonul register chiar daca password input este gol mi se insereaza in baza de date, am tot incercat sa caut care e problema dar nu am reusit inca ,sper sa ma ajute cineva !

Cod: Selectaţi tot



$error 
= array();

   
$sub filter_input(INPUT_POST,'register');
   
$username filter_input(INPUT_POST,'username');
   
$fname filter_input(INPUT_POST,'first_name');
   
$lname filter_input(INPUT_POST,'last_name');
   
$password filter_input(INPUT_POST,'pass');
   
$repassword filter_input(INPUT_POST,'repass');
   
$email filter_input(INPUT_POST,'email');
   
   
  if(isset(
$sub)){
     
      if(empty(
$username)){
          
$error[] = "Your username cannot be empty!";
      }
       if(empty(
$fname)){
          
$error[] = "Your first name cannot be empty!";
      }
       if(empty(
$lname)){
          
$error[] = "Your last name cannot be empty!";
      }
       if(empty(
$password)){
          
$error[] = "Your password cannot be empty!";
      }
       if(empty(
$repassword)){
          
$error[] = "Your re-password cannot be empty!";
      }
       if(empty(
$email)){
          
$error[] = "Your email cannot be empty!";
      }
      
       if(!empty(
$username) && minlenght($username,8) === false){
          
$error[] = "Your username must have atleast 8 characters!";
      }
      
        if(!empty(
$username) && maxlenght($username,25) === false){
          
$error[] = "Your username must have less than 25 characters!";
      }
      if(!empty(
$password) && minlenght($password,8) === false){
          
$error[] = "Your password must have atleast 8 characters!";
      }
      if(!empty(
$password) && maxlenght($password,25) === false){
          
$error[] = "Your password must have less than 25 characters!";
      }
      
      if(
$password !== $repassword){
          
$error[]="Your password dosen`t match!";
      }
      
      if(!empty(
$email) && !filter_var($email,FILTER_VALIDATE_EMAIL)){
          
$error[]="Email format invalid!";
      }
//      if(!empty($email) && filter_var($email,FILTER_VALIDATE_EMAIL) && email_exist($email)===true){
//          $error[]="This email is already taken!";
//      }
      
      
if(user_exist($username) === true){
          
$error[]="This username is already taken!";
      }
      
      if(empty(
$errors)){
      
$active 0;
      
$insert_user = [
          
'id'           => "",
          
'username'     => $username,
          
'first_name'   => $fname,
          
'last_name'    => $lname,
          
'password'     => md5($password),
          
'email'        => $email,
          
'date'         => "",
          
'active'       => $active
          
      
];
      
     
     
$columns "`" .implode("`,`",array_keys($insert_user)) ."`";
     
$values "'" .implode("','",$insert_user) ."'";
     
     echo 
var_dump($columns). "</br>";
     echo 
var_dump($values) . "</br>";
      
$sql "INSERT INTO `users`($columns) VALUES($values)";
      
mysqli_query($connection,$sql);
     
    }
    
}

if(!empty(
$error)){
    foreach (
$error as $err){
        echo 
$err "</br>";
    }
}



 



nevvermind
Senior Member
Mesaje: 1264
Membru din: Mar Iun 22, 2010 3:17 pm

Re: Problema parola

Mesajde nevvermind » Dum Oct 22, 2017 2:58 am

Conditia if(empty($errors)){ e gresita. Variabila e "$error", nu "$errors".
Cum "empty($errors)" e true (chiar si pt o variabila nedefinita - de asta e pacatos empty(), app), ajunge sa insereze valori. Presupun ca valorea inserata e "d41d8cd98f00b204e9800998ecf8427e".

Niste ponturi:
- gugal "sql injection php mysqli"
- nu folosi niciodata md5() pt parola; e depasita de mult timp, ci http://php.net/manual/en/function.password-hash.php (password_hash($_POST['some_user_pass'], PASSWORD_DEFAULT)) si verifica cu http://php.net/manual/en/function.password-verify.php. Coloana unde stochezi parola, fa-o de 255 varchar, sa fie loc.
- fiindca nu ai depistat problema, imi imaginez ca folosesti un editor simplu de PHP; foloseste un IDE serios: netbeans, phpstorm etc. Ti-ai fi dat seama imediat unde era problema.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/

chvalentin14
New Member
Mesaje: 2
Membru din: Sâm Oct 14, 2017 2:27 pm

Re: Problema parola

Mesajde chvalentin14 » Dum Oct 22, 2017 2:21 pm

Multumesc pentru raspuns nevvermind voi tine cont de sfaturile date!

CristianG
Average Member
Mesaje: 85
Membru din: Mie Oct 30, 2013 4:45 pm

Re: Problema parola

Mesajde CristianG » Sâm Noi 04, 2017 12:10 pm

nevvermind scrie:Cum "empty($errors)" e true (chiar si pt o variabila nedefinita - de asta e pacatos empty(), app), ajunge sa insereze valori. Presupun ca valorea inserata e "d41d8cd98f00b204e9800998ecf8427e".


Cod: Selectaţi tot

<?php
$test = "s";
var_dump((empty($test)));


Nu trebuie sa fugi de functia empty doar ca trebuie sa ai grija ce doresti cu exactitate sa verifici.

In cazul in care $test = "" este true dar in cazul in care contine un caracter atunci este false. Deci este safe to use

In mare parte emtpy il recomand, cand incerci sa verifici daca un array este definit si contine ceva de si poti folosi chiar si in conditia ta, doar mare atentie daca variabila nu este definita atunci apare ca true asa cum spune si nevvermind.

Da sunt total deacord cu nevvermind, in cazul in care esti sigur ca este posibilitatea ca variabila ta sa apara ca nedefinita ar fi bine sa incluzi !isset

if(isset($var) && !empty($var)
{
//continue
}

In conditia respectiva verificam asa (DACA $var este definita si nu este goala atunci urmeaza conditia asta in caz contrar apare else.

Totul depinde cum doresti sa manipulezi datele


EX:
if(!isset($var) && empty($var)


Nu va conta cum doresti poti pune la inceput eroarea apoi success`-ul in else totul depinde de tine, o sa vezi pareri diferite dar asta nu conteaza atat timp cat conditia este corecta si pusa unde trebuie.

PS: Nu incerca sa copiezi sunt foarte multe variante de a face o conditie


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 99 vizitatori