Szerző Téma: Dagobert féle login  (Megtekintve 2837 alkalommal)

0 Felhasználó és 1 vendég van a témában

Nem elérhető Keveqiah

  • Globális moderátor
  • Teljes tag
  • *****
  • Hozzászólások: 2.332
  • Kisb
    • Keveqiah
Re: Dagobert féle login
« Válasz #4 Dátum: 2010. június 10., 18:14:24 »
Aposztrófok (sok helyen)
Kód: PHP
  1. $_POST[jelszo] != $_POST[jelszo2]
  2. //.....
  3. $_POST['jelszo'] != $_POST['jelszo2']
  4.  

Kevesebb sor. :)
Kód: PHP
  1.         if (mysql_num_rows($nevegyez) == 0 ){
  2.         if (mysql_num_rows($mailegyez) == 0 ){
  3.  
"Gonosz vagyok. Ez ugyebár nem hit dolga."
"Egy ember halála tragédia, ezrek halála statisztika."

Nem elérhető ThompsoN

  • Törzstag
  • **
  • Hozzászólások: 555
  • ThompsoN
Re: Dagobert féle login
« Válasz #3 Dátum: 2010. június 10., 18:14:19 »
Egy két kisebb hibát vettem észre.
Az első, az tulajdonképpen nem hiba, hanem jó tanács. SESSION-t ne a session_register() fv.-el regiztrálj, hanem így.
Kód: PHP
  1. $_SESSION['session'] = "ertek";
  2.  
Azért így, mert a session_Register() már nem támogatott. (Azt hiszem PHP 5.3-tól.)

A másik hiba, ami már tényleg az, az az hogy a log.php-ban konstansként próbálod az értéket átadni a függvénynek, holott az string.
Kód: PHP
  1.  
De ez a függbény sem támogatott. Én így szoktam csinálni.
Kód: PHP
  1. if(isset($_SESSION['session']))
  2. {
  3. //...
  4. }
  5.  

Még egy hiba van, az pedig a html-ben. Olyan, hogy </input> nincs. Az inputnak nincs zárótagja. Az utolsó input, pedig nem volt lezárva.
Kijavítva.
Kód: HTML
  1. <form action="log.php" method="post">Név:<input type="text" name="nev"><br>Jelszó:<input type=password name="jelszo"><br><input type="submit" value="Belépés"><br></form>

Első ránézésre mást nem találtam.:) Remélem segítségedre lesz.:)
ThompsoN

Nem elérhető dagobert

  • Tag
  • *
  • Hozzászólások: 116
Re: Dagobert féle login
« Válasz #2 Dátum: 2010. június 10., 18:09:44 »
A regisztrációs fájlnál van 1 kis gibanc amit felfedeztem:
nem tud még az "aktiv" mezőről és emiatt panaszkodik, de van rá megoldás!
A 31-es sor után szúrjuk be az '$aktiv' kezdetűt..
33as sort kell kicsit módosítani:
Kód: PHP (brief)
  1. $aktiv=date('Y-m-d H:i:s',time());
  2. $parancs = mysql_query("insert into tag(nev, jelszo, mail, aktiv, utlog) values ( '$nev', '$jelszo', '$mail','$aktiv','$reg' )");
  3.  

Egy alapértelmezett értéket hoz lérte ami lehetne akár a regisztráció ideje is.
Mint azt remélhetõen tudjuk, vaktában soha nem állunk neki programot írni. - ez a legizgalmasabb része a dolognak! :)

Nem elérhető dagobert

  • Tag
  • *
  • Hozzászólások: 116
Dagobert féle login
« Válasz #1 Dátum: 2010. június 10., 17:45:09 »
A tanácsot megfogadva létrehozom a témát hogy ne szemeteljek össze vissza.
Ez a login nagyon egyszerű de annál több fejtörést okoz.  :knuppel:
Szóval a lényeg: a login 3 fájlból áll:
-config.php (ez tartalmazza a beállításokat mint a mysql-hez tartozó hozzáférés adatait)
-reg.php  (ez tartalmazza a regisztrációt végző scriptet)
-log.php (a belépésért felel)
Ezeket ugyan egy cikkből szedtem le és a saját igényeimnek terveztem  módosítani.
A 'config.php' forrása:
Kód: PHP (brief)
  1. <?php
  2. $dbuser=".....";
  3. $dbpasw="....";
  4. $base="bármi";
  5. $host="localhost";
  6. // 3600*h*nap 1nap=24h!
  7. $timeout=3600*8;
  8. $conn=mysql_connect ($host,$dbuser,$dbpasw);
  9. mysql_select_db($base,$conn);
  10. ?>
  11.  
A timeout egyenlőre nem megy az most fölös.

reg.php tartalma:
Kód: PHP (brief)
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  4. </head>
  5. <body>
  6. <?php
  7. include ("config.php");
  8. print "<form method=post action='$php_self'><br>";
  9. print "Név:<input type=text name='nev'><br>";
  10. print "Jelszó:<input type=password name='jelszo'><br>";
  11. print "Jelszó újra:<input type=password name='jelszo2'><br>";
  12. print "E-mail cím:<input type=text name='mail'><br>";
  13. print "<input type=submit value=Regisztráció></form><br>";
  14.  
  15. if (isset($_POST[nev])){
  16.         if ($_POST[jelszo] != $_POST[jelszo2] ){
  17.                 print "Nem egyezik meg a két jelszó!";
  18.         }else{
  19.                 $nev = htmlspecialchars($_POST[nev]);
  20.                 $mail = htmlspecialchars($_POST[mail]);
  21.                 $nevegyez = mysql_query("select * from tag where nev = '$nev'");
  22.                 $mailegyez = mysql_query("select * from tag where mail = '$mail'");
  23.                 $szam = mysql_num_rows($nevegyez);
  24.                 $szam2 = mysql_num_rows($mailegyez);
  25.                 if ($szam == 0 ){
  26.                 if ($szam2 == 0 ){
  27.                  
  28.                          if ( $_POST[jelszo] != "" && $_POST[mail] != "" && $_POST[nev] != "" ){
  29.                                 $jelszo = md5($_POST[jelszo]);
  30.                                 $jelszo = substr($jelszo, 0,20);
  31.                                 $reg = time();
  32.                                 $parancs = mysql_query("insert into tag(nev, jelszo, utlog ,mail) values ( '$nev', '$jelszo', '$reg', '$mail')");
  33.                                 print "Sikeres regisztráció!";
  34.                         }else{
  35.                                         print "Nem töltöttél ki minden mezőt!";
  36.                         }
  37.  
  38.                 }else{
  39.                 print "Foglalt e-mail cím!";
  40.                 }
  41.                 }
  42.                 else
  43.                 {
  44.                 print "Foglalt név!";
  45.                 }
  46.         }
  47. }
  48. ?>
  49. </body></html>
  50.  
Ez tökéletesen megy.
És amivel a legtöbb probléma forrása, a log.php:
Kód: PHP (brief)
  1. <?php
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
  5. </head>
  6. <body>
  7. <?php
  8. if ($_GET[cmd] == kilep){
  9. }
  10. if ( isset($_POST["nev"]) ){
  11.         include("config.php");
  12.         $nev = htmlspecialchars($_POST[nev]);
  13.         $jelszo = md5($_POST["jelszo"]);
  14.         $jelszo = substr($jelszo, 0,20);
  15.         $lekerdezes = mysql_query("SELECT * FROM tag where nev = '$nev' and jelszo = '$jelszo'");
  16.         $vanelekerdezes = mysql_num_rows($lekerdezes);
  17.         if ($vanelekerdezes==1)//Ha van ilyen felhasználónév, jelszó páros
  18.         {
  19.                 session_register( "nev" );
  20.                 $time = time();
  21.                 $frissit=mysql_query("UPDATE tag SET utlog='$time',aktiv = NOW() WHERE nev = '".$_POST[nev]."'");
  22.         $on=mysql_query("SELECT nev,aktiv FROM tag WHERE nev='".$_POST[nev]."',aktiv>date_sub(now(), INTERVAL 2 hour) ORDER BY aktiv ASC");
  23.                
  24.                                 header("Location: log.php");
  25.         }else{
  26.         print 'Rossz név és jelszó páros!<br>';
  27.         print '<form action="log.php" method="post">Név:<input type="text" name="nev" size="25"><br>Jelszó:<input type=password name="jelszo" size="25"<br><input type="submit" value="Belépés"><br></form>';
  28.         }
  29.  
  30. }else if (session_is_registered(nev)){
  31.                 print "<b>Üdvözöllek ".$_SESSION['nev']."!</b><br><a href=log.php?cmd=kilep>Kilépés</a><br><br>";
  32.                                         include("lap.php");
  33.                                         }
  34.         else {
  35.         print '<form action="log.php" method="post">Név:<input type="text" name="nev"></input><br>Jelszó:<input type=password name="jelszo"><br></input><input type="submit" value="Belépés"</input><br></form>';
  36. }
  37.  
  38.  
  39. ?>
  40. </body></html>
  41.  
Felhívták figyelmem hogy az input és a form tag-eknél nincs lezárás, ha találtok benne még olyat ne felejtsétek el lezárni én amit észrevettem lezártam.
Mint azt remélhetõen tudjuk, vaktában soha nem állunk neki programot írni. - ez a legizgalmasabb része a dolognak! :)