Přihlašování – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přihlašování – PHP – Fórum – Programujte.comPřihlašování – PHP – Fórum – Programujte.com

 

Hanka
~ Anonymní uživatel
6 příspěvků
26. 10. 2013   #1
-
0
-

Ahoj, 

chtěla bych se pokusit se o přihlašování s různými kódováními a úplně s mi to nedaří. Při každém neúspěšném pokusu se do databáze přičítá jednička a podle téhle položky by se s narůstajícími čísly měly dít jiné akce.  Podle všeho probíhá vždy jen ta větev s podmínkou if(FLC < 3)

if (@($_POST["prihlas"])){
        $nick = $_POST["nick"];
        $heslo = $_POST["heslo"];
        $hesloz =  ##############;
        $hesloe1 = ##############;
        $hesloe2 = ##############;
        $hesloe3 = ##############;
        if(isset($_POST["trvale"])){
          setCookie("trvale_prihlaseni", "1", mktime(18, 30, 0, 1, 1, 2020));
          setCookie("nick", "$nick", mktime(18, 30, 0, 1, 1, 2020));
          setCookie("heslo", "$heslo", mktime(18, 30, 0, 1, 1, 2020));
        }      
        include "./config.php";
        $dotay = mysql_query("SELECT * FROM uzivatele WHERE nick='".mysql_real_escape_string($nick)."' AND (heslo_z='$hesloz' OR heslo_e1='$hesloe1' OR heslo_e2='$hesloe2' OR heslo_e3='$hesloe3') AND overeni='1' ;");
                        while($vxstup = mysql_fetch_object($dotay))
                        {
                          $id = $vxstup -> id;
                          $nickdb = $vxstup -> nick;
                          $heslozdb = $vxstup -> heslo_z;
                          $hesloe1db = $vxstup -> heslo_e1;
                          $hesloe2db = $vxstup -> heslo_e2;
                          $hesloe3db = $vxstup -> heslo_e3;  
                          $email = $vxstup -> email;
                          $opravneni = $vxstup -> opravneni;
                          $avatar = $vxstup -> avatar;
                          $FLC = $vxstup -> FLC;
                        }
        //kontroluju hodnotu FLC a podle toho se rozhoduju
        
        if(@$FLC < 3){        
          if($nick == isset($nickdb) AND $hesloz == isset($heslozdb)){
              $_SESSION["id"] = $id;
              $_SESSION["nick"] = $nick;
              $_SESSION["email"] = $email;
              $_SESSION["opravneni"] = $opravneni;
              $_SESSION["avatar"] = $avatar;
              $uprava_flc = mysql_query("UPDATE uzivatele SET FLC='0' WHERE nick='".mysql_real_escape_string($nick)."';");
              echo "<div class='nadpisstranky'>Byli jste přihlášeni jako $nick</div>
                <div class='popisstranky'>Nyní můžete pokračovat v procházení stránek.</div>";
              } else {
              echo "<div class='nadpisstranky'>Pokus o přihlášení selhal</div>
                <div class='popisstranky'>Zadal jsi špatné přihlašovací údaje nebo nemáš aktivovaný účet. <br />
                Zkontroluj velká / malá písmena, diakritiku... Pro aktivaci si zkontroluj emailovou schránku uvedenou při registraci.</div>";            
                  $uprava_flc = mysql_query("UPDATE uzivatele SET FLC=(FLC + 1) WHERE nick='".mysql_real_escape_string($nick)."';"); 
                  echo "<script>
                                setTimeout(function(){
                                parent.window.location.reload(true);}, 2000);</script>";
              } 
            }elseif(@$FLC >= 3 AND $FLC < 6){        
          if($nick == isset($nickdb) AND $hesloe1 == isset($hesloe1db)){
              $_SESSION["id"] = $id;
              $_SESSION["nick"] = $nick;
              $_SESSION["email"] = $email;
              $_SESSION["opravneni"] = $opravneni;
              $_SESSION["avatar"] = $avatar;
              $uprava_flc = mysql_query("UPDATE uzivatele SET FLC='0' WHERE nick='".mysql_real_escape_string($nick)."';");
              echo "<div class='nadpisstranky'>Byli jste přihlášeni jako $nick</div>
                <div class='popisstranky'>Nyní můžete pokračovat v procházení stránek.</div>";
                echo "<script>
                                setTimeout(function(){
                                parent.window.location.reload(true);}, 5000);</script>";
              } else {
              echo "<div class='nadpisstranky'>Pokus o přihlášení selhal</div>
                <div class='popisstranky'>Zadal jsi špatné přihlašovací údaje nebo nemáš aktivovaný účet. <br />
                Zkontroluj velká / malá písmena, diakritiku... Pro aktivaci si zkontroluj emailovou schránku uvedenou při registraci.</div>";            
                  $uprava_flc = mysql_query("UPDATE uzivatele SET FLC=(FLC + 1) WHERE nick='".mysql_real_escape_string($nick)."';");  
                  echo "<script>
                                setTimeout(function(){
                                parent.window.location.reload(true);}, 2000);</script>";
              } 
            }elseif(@$FLC >=6 AND $FLC < 9){        
          if($nick == isset($nickdb) AND $hesloe2 == isset($hesloe2db)){
              $_SESSION["id"] = $id;
              $_SESSION["nick"] = $nick;
              $_SESSION["email"] = $email;
              $_SESSION["opravneni"] = $opravneni;
              $_SESSION["avatar"] = $avatar;
              $uprava_flc = mysql_query("UPDATE uzivatele SET FLC='0' WHERE nick='".mysql_real_escape_string($nick)."';");
              echo "<div class='nadpisstranky'>Byli jste přihlášeni jako $nick</div>
                <div class='popisstranky'>Nyní můžete pokračovat v procházení stránek.</div>";
                echo "<script>
                                setTimeout(function(){
                                parent.window.location.reload(true);}, 5000);</script>";
              } else {
              echo "<div class='nadpisstranky'>Pokus o přihlášení selhal</div>
                <div class='popisstranky'>Zadal jsi špatné přihlašovací údaje nebo nemáš aktivovaný účet. <br />
                Zkontroluj velká / malá písmena, diakritiku... Pro aktivaci si zkontroluj emailovou schránku uvedenou při registraci.</div>";            
                  $uprava_flc = mysql_query("UPDATE uzivatele SET FLC=(FLC + 1) WHERE nick='".mysql_real_escape_string($nick)."';"); 
              }
            } else{        
          if($nick == isset($nickdb) AND $hesloe3 == isset($hesloe3db)){
              $_SESSION["id"] = $id;
              $_SESSION["nick"] = $nick;
              $_SESSION["email"] = $email;
              $_SESSION["opravneni"] = $opravneni;
              $_SESSION["avatar"] = $avatar;
              $uprava_flc = mysql_query("UPDATE uzivatele SET FLC='0' WHERE nick='".mysql_real_escape_string($nick)."';");
              echo "<div class='nadpisstranky'>Byli jste přihlášeni jako $nick</div>
                <div class='popisstranky'>Nyní můžete pokračovat v procházení stránek.</div>";
                echo "<script>
                                setTimeout(function(){
                                parent.window.location.reload(true);}, 5000);</script>";
              } else {
              echo "<div class='nadpisstranky'>Pokus o přihlášení selhal</div>
                <div class='popisstranky'>Zadal jsi špatné přihlašovací údaje nebo nemáš aktivovaný účet. <br />
                Zkontroluj velká / malá písmena, diakritiku... Pro aktivaci si zkontroluj emailovou schránku uvedenou při registraci.</div>";            
                  $uprava_flc = mysql_query("UPDATE uzivatele SET FLC=(FLC + 1) WHERE nick='".mysql_real_escape_string($nick)."';"); 
                  $ip = $_SERVER["REMOTE_ADDR"];
                  $zapis_blokovani = mysql_query("INSERT INTO blokovaneip SET ip='$ip' do_jakeho_uctu='$nick';");
                  echo "<script>
                                setTimeout(function(){
                                parent.window.location.reload(true);}, 2000);</script>";
              }
          }
      }

dík za radu a upozornění co dělám blbě  :) Asi by to šlo i přes switch, ale nějak si netroufám

Nahlásit jako SPAM
IP: 94.113.211.–
Kubina
~ Anonymní uživatel
17 příspěvků
29. 10. 2013   #2
-
0
-

#1 Hanka
Ahoj, co to dělá?

- Přičítá jedničku do sloupečku FLC?

- Čte to vůbec toho uživatele?

- hodnota var_dump($FLC)?

Nahlásit jako SPAM
IP: 193.86.114.–
peter
~ Anonymní uživatel
4014 příspěvků
30. 10. 2013   #3
-
0
-

echo "post = "; print_r($_POST); //na radku 0, co to vypise?
echo "flc = ".$FLC; // pred radkem if(@$FLC < 3), co to vypise?

sql dotazy bych resil jako
$query = "SELECT * FROM uzivatele WHERE nick='%s' AND (heslo_z='%s' OR heslo_e1='%s' OR heslo_e2='%s' OR heslo_e3='%s') AND overeni='1'";
$query = sprint_f($query, mysql_real_escape_string($nick), $hesloz, $hesloe1, $hesloe2, $hesloe3);
echo $query; // at vis, jestli tam davas spravne hodnoty
Navic vubec nemas jednotliva hesla pres mysql_real_escape_string a $nick escapujes pro nekolik dotazu opakovane.
A jeste, dotazem vybiras vsechny sloupce, coz muze byt nebezpecne.
Takze v dotazu nemas zadny limit, takze pocet vybranych radku muze byt vice nez 1 a tim padem while se provede pro vsechny radky, ale data zustanou jen z posledniho z nich.
A pak mi neni jasne, proc to pole presunujes do promennych, kdyz v poli se s tim lepe pracuje... $id = $vxstup -> id; Navic, to jde resit pres list. list($id, $vxstup, $nickdb, $heslozdb) = $vxstup;
$id = $vxstup -> id;

A taky opakovane provadis totez, co mohlo byt volane funkci, naplneni session, vypsani hlasky.

$nick == isset($nickdb) - to neusi platit, pokud pred nebo za nick dam mezeru, ty si to nijak neosetrujes, treba pomoci trim a pod :)

$_SESSION["id"] = $id; - to se da prave elegantne resit tim polem
foreach(array("id", "nick", "email", "opravneni", "avatar") as $value) {$_SESSION[$value] = $$value;}
foreach(array("id", "nick", "email", "opravneni", "avatar") as $value) {$_SESSION[$value] = $vxstup[$value];} //nebo

setCookie - proc nastavujes cookies jeste pred tim, nez vis, zda bude skutecne prihlasen? To by se melo nastavovat se SESSION,ne?

Nahlásit jako SPAM
IP: 2001:718:2601:400:0:5efe:...–
Hanka
~ Anonymní uživatel
6 příspěvků
1. 11. 2013   #4
-
0
-

Ahoj, všem moc děkuji za postřehy, něco málo jsem si už prošla a napravila a do zbytku se ještě pustím. Dělala jsem to podle návodů na war3zone.eu, kde je to srozumitelné i pro začátečnici ale asi to má svoje mouchy   

Nahlásit jako SPAM
IP: 94.113.211.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Přihlašování. — založil Counter

Prihlasovani na E-mail — založil Racak94

Prihlasovani do site — založil dyžon

Přihlašování certifikátem — založil MP1999

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý