Comunitatea PHP Romania
MightyDeals

Prima pagină PHP General Cod PHP php login Cod

php login Cod

Ai o întrebare legată de PHP? Incercăm să îi găsim soluţie. Sau poate doar vrei să publici un cod interesant.

Mesaj Mie Apr 18, 2012 6:19 pm
micul-programator.ro Average Member

Mesaje: 144
Localitate: http://micul-programator.ro

Eu nu inteleg ceva, probabil nu am citit atent insa care este codul doi? ca ai zis ca vrei sa vezi daca valorile din acel array sunt in codul doi ?

Ps : dupa ce ai preluat datele din formularulde logare poti verifica cu in_array daca userul introdus de vizitator este in $users

Mesaj Mie Apr 18, 2012 6:31 pm
ctl PHPRomania Supporter

Mesaje: 18
Scuze am uitat sa introduc si codurile cele doua, scrise de mandix si ispas.
Deci vreau sa verific numele de utilizatori din codul acesta:

<?php



$domain_code = 'website';   
$random_num_1 = 20;      
$random_num_2 = 565;      
$random_num_3 = 3;         

$users = array(
      'ion' => 'test',
      'user2' => 'test',
      'asd' => '1234'
   );


?>


cu unul din aceste doua coduri:

1
$login_username = strtolower($_GET["username"]); //folosesti strtolower pentru a nu avea majuscule
/* faci un count ,cum ai tu,daca exista acest $login_username; */
if( count($login_username) > 0){
require($login_username.'.php');
}else{
$login_username nu este declarat ;
}


sau 2:

<?php
error_reporting(E_ALL & ~E_NOTICE);
?>
<?php
$submit=$_POST['submit'];
if ($submit) {
$nume = $_POST['nume'];
if(isset($nume)&&!empty($nume)) {
header('Location: '.$nume.'.php');
}

}

?>
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="proba.php" method="post">
<input type="text" name="nume" >
<input type="submit" name="submit">
</form>
</body>
</html>



eu primesc diverse erori, cel mai probabil nu declar ceva cum trebuie, as dori un exemplu concret cu username-ul ion, ca sa inteleg mecanismul, multumesc.
Ultima oară modificat de ctl pe Mie Apr 18, 2012 6:54 pm, modificat 1 dată în total.

Mesaj Mie Apr 18, 2012 6:44 pm
micul-programator.ro Average Member

Mesaje: 144
Localitate: http://micul-programator.ro

hai sa iti explic logica cam ce ar trebui

//preluam datele din formularul de login

//preluam erorile din formular

//daca sunt erori

//afisam erorile

//afisam iarasi formularul de login


//altfel
//facem select din baza de date (where user='{$date['utilizator_din_formualr']}' AND pass='{$date['pass_din_formular']}')

//daca nu exista userul

//afisam mesaj de eroare ca nu exista

//afisam formularul de login

//altfel
//facem logarea (sesiuni si cookie)

//daca nu sa facut logare

//afisam mesaj de eroare

//altfel
//afisam mesaj de logat cu succes

cam asa ar trebui sa arate loginul tau

Mesaj Mie Apr 18, 2012 6:56 pm
ctl PHPRomania Supporter

Mesaje: 18
micul-programator.ro scrie:
hai sa iti explic logica cam ce ar trebui
.
.
.
//altfel
//facem select din baza de date (where user='{$date['utilizator_din_formualr']}' AND pass='{$date['pass_din_formular']}')
.
.
.
cam asa ar trebui sa arate loginul tau


Ca idee am inteles, dar eu nu folosesc nicio baza de date, doar un fisier php de unde vreau sa-mi citeasca username-ul care s-a logat.
Ultima oară modificat de ctl pe Mie Apr 18, 2012 7:03 pm, modificat 1 dată în total.

Mesaj Mie Apr 18, 2012 7:01 pm
micul-programator.ro Average Member

Mesaje: 144
Localitate: http://micul-programator.ro

cu alte cuvinte ai un camp si daca eu introduc in el ion si daca ion e in array, eu sunt logat?

Mesaj Mie Apr 18, 2012 7:05 pm
ctl PHPRomania Supporter

Mesaje: 18
Da, dupa ce introduci username-ul si parola iti va aparea pagina lui Ion, sau cu ce username te loghezi.

Eu am nevoie sa-mi ia din array doar username-ul respectiv si sa ma duca la pagina cu numele username-ului.



<strong><font color="FF6699" face="vivaldi"> <?php echo $login->username; ?></p>



Mi-a mai venit o idee, eu mai am acest mic cod de mai sus pe pagina care apare dupa ce un utilizator se logheaza, acest mic cod imi afiseaza pe pagina numele utilizatorului care tocmai s-a logat, ma gandeam daca as putea sa aplic aici o structura repetitiva, ceva de genul:



//Daca apare numele utilizatorului Ion
//atunci sa te duca pe pagina ion.php

//daca apare numele utilizatorului cristi pe pagina
//atunci sa te duca pe pagina cristi.php

Nu stiu daca este corect ce am zis sau este o mare prostie, dar ma gandeam daca ar merge, sau o data ce username-ul s-a logat nu se mai poate redirectiona catre pagina care trebuie ?

Revin totusi la codul pe care l-am gandit eu in primul post, am scris de aceasta data asa

if ($login_username == "Cristi") {
require ('cristi.php');
exit();
}


Partea buna este ca nu primesc nicio eroare, partea proasta este ca nu se intampla nimic, e ca si cum nu ar exista codul.Acest cod l-am scris intr-un fisier php separata si l-am apelat in codul main al paginii, poate nu l-am apelat unde trebuie ? codul este scris corect?

Mesaj Mie Apr 18, 2012 7:30 pm
micul-programator.ro Average Member

Mesaje: 144
Localitate: http://micul-programator.ro

ctl scrie:
Da, iar tie iti va aparea pagina lui Ion, sau cu ce username te loghezi


  $form='<form method="post">
          User:<input type="text" name="pag">
          Pass:<input type="text" name="pass">
          <input type="submit" value="Deschide">';
     
      if(!isset($_POST['pag'])){
          echo $form;
      }else{
          //preluam datele
          $date=get_date();
          //erorile
          $erori=check_date($date);
          //daca sunt erori
          if(count ($erori)){
              foreach($erori as $afiseaza){
                  echo $afiseaza.'<br>';
              }
          }
          else{
              set_login($date,$users);
          }
      }
     
      //function get_date
      function get_date(){
         $date=isset($_POST['pag'])?tirm(strip_tags($_POST['pag'])):'';
         //....
         return $date;
      }
      function heck_date($date){
          $erori=array();
          if(strlen($date['pag'])<3){
              $erori[]='Nu ai completat datele';
          }
         
          return $erori;
      }


eu am scris succint, mai trebuie sa inbunatatesti tu codul si sa il completezi dupa logica de mai sus, ar fi ok sa folosesti switch sa nu ai tot un if,else

Mesaj Mie Apr 18, 2012 8:04 pm
mandix Avatar utilizator
Average Member

Mesaje: 122
Localitate: Santana, Arad

Eu am vrut sa zic de la prima postare sa ai un array, dar tot aici am ajuns. La codul ce ti l-am dat faci simplu o cautare in array sa vezi daca exista numele, ai grija sa introduci valoarea nu cheia (test sau 1234 in cazul de fata).
Codul refacut dupa cum a spus si micul-programator cu in_array:
<?php

$submit=$_POST['submit'];
if ($submit) {
$users = array(
'ion' => 'test',
'user2' => 'test',
'asd' => '1234'
);
$nume = $_POST['nume'];
if(isset($nume)&&!empty($nume)) {
if(in_array($nume, $users)){
header('Location: '.$nume.'.php');
} else {
echo 'nu am gasit numele';
}
}else {
echo 'not ok';
}

}

?>

P.S. Si daca tot faci cu user si parola mai trebuie sa faci un array pentru parole.

Mesaj Joi Apr 19, 2012 8:47 am
ctl PHPRomania Supporter

Mesaje: 18
@mandix am scris codul tau, dar primesc o eroare la linia 3.

Notice: Undefined index: submit in C:\xampp\htdocs\select.php on line 3

presupun ca atunci cand primesc o eroare codul nu o sa ruleze mai departe pana nu rezolv eroare, nu?

Mesaj Joi Apr 19, 2012 10:22 am
micul-programator.ro Average Member

Mesaje: 144
Localitate: http://micul-programator.ro

ctl scrie:
@mandix am scris codul tau, dar primesc o eroare la linia 3.

Notice: Undefined index: submit in C:\xampp\htdocs\select.php on line 3

presupun ca atunci cand primesc o eroare codul nu o sa ruleze mai departe pana nu rezolv eroare, nu?


$submit=$_POST['submit']; ???

se foloseste isset , if(isset($_POST['camp']))

Mesaj Joi Apr 19, 2012 11:41 am
mandix Avatar utilizator
Average Member

Mesaje: 122
Localitate: Santana, Arad

pune si tu error reporting-ul
micul-programator, eu de obicei declar cam tot ce se poate declara :D

Mesaj Joi Apr 19, 2012 11:43 am
micul-programator.ro Average Member

Mesaje: 144
Localitate: http://micul-programator.ro

mandix scrie:
pune si tu error reporting-ul
micul-programator, eu de obicei declar cam tot ce se poate declara :D


aici nu e vorba de declarare ci ca e nedefinit deoarece pana la submit $_POST un array gol

Mesaj Joi Apr 19, 2012 3:32 pm
ctl PHPRomania Supporter

Mesaje: 18
Am inlocuit cum mi-ai spus tu micul-programator.ro si acuma numai am nicio eroare, dar nici nu se intampla nimic....adica nu ma duce nicaieri si nu se intampla nimic,,,gresesc undeva ?

Mesaj Joi Apr 19, 2012 3:46 pm
micul-programator.ro Average Member

Mesaje: 144
Localitate: http://micul-programator.ro

ctl scrie:
Am inlocuit cum mi-ai spus tu micul-programator.ro si acuma numai am nicio eroare, dar nici nu se intampla nimic....adica nu ma duce nicaieri si nu se intampla nimic,,,gresesc undeva ?


ai partea de formular? cu alte cuvinte daca nu sa facut submit sa afisezi formularul, daca sa facut submit sa verifici userul si sa faci redirect?

Mesaj Joi Apr 19, 2012 3:57 pm
ctl PHPRomania Supporter

Mesaje: 18
Pai am facut in felul urmator acest cod:

<?php

if(isset($_POST['camp']))
if ($submit) {
$users = array(
'ion' => 'test',
'user2' => 'test',
'asd' => '1234'
);
$nume = $_POST['nume'];
if(isset($nume)&&!empty($nume)) {
if(in_array($nume, $users)){
header('Location: '.$nume.'ion.php');
} else {
echo 'nu am gasit numele';
}
}else {
echo 'not ok';
}

}

?>


L-am salvat cu numele select.php si l-am apelat la inceputul acestui cod:


<?php


require('_login_users.php');
require('_login_class.php');
require('bg.html');
require('restrict.php');
[b]require('select.php');[/b]

$login = new login_class;

$today_ts = strtotime("now");
$today_m = date('n', $today_ts);
$pass_login = FALSE;

$login->domain_code = $domain_code;
$login->today_ts = $today_ts;
$login->today_m = $today_m;
$login->users = $users;
$login->num_1 = $random_num_1;
$login->num_2 = $random_num_2;
$login->num_3 = $random_num_3;

//Verify
if (!$login->verify_settings()) {
   echo '<strong>Invalid Admin Settings for Login Script</strong><br />Check your settings and retry logging in';
   exit();
}
            
//Logged In
if (isset($_COOKIE[$domain_code.'_uid']) && $_COOKIE[$domain_code.'_uid']!='' && isset($_COOKIE[$domain_code.'_cid']) && $_COOKIE[$domain_code.'_cid']!='') {
   $key_uid = $login->cleanse_input($_COOKIE[$domain_code.'_uid']);
   $key_cid = $login->cleanse_input($_COOKIE[$domain_code.'_cid']);
   
   if (!$login->verify_login($key_uid, $key_cid)) {
      $login->error_message = 'Login has expired';
   } else {
      $pass_login = TRUE;   
   }
}

//Verify Logged In Credentials
if (!$pass_login) {
   $need_login = TRUE;
   
   //Trying To Login
   if (isset($_POST['login'])) {
      //Verify Login
      $login_user = $login->cleanse_input($_POST['username']);
      $login_pass = $login->cleanse_input($_POST['password']);
      
      //Check Login
      if ($login->check_login($login_user, $login_pass)) {
         //Encode
         $login->encryption_key($login_user);
         
         $need_login = FALSE;
      } else {
         $login->error_message = 'Username sau parola gresita, incercati din nou';   
         $need_login = TRUE;
      }
   }
   
   //Login Page
   if ($need_login) {
      require('_login_page.php');
      exit();
   }

}

?>


Si nu se intampla nimic, oare nu l-am introdus unde trebuie?

Mesaj Dum Apr 14, 2013 12:55 am
Google Bot New Member

Mesaje: 1
AnteriorUrmătorul

Înapoi la Cod PHP

Copyright © 2001-2013 PHP Romania Gazduire web | Haine online | Gazduire web | Campanii SMS | Gazduire Claus Web | Inregistrare Domenii | Anunturi | Jocuri cu bile
Furnizat de phpBB® Forum Software © phpBB Group
Translation/Traducere: phpBB România
Powered by Simplis