Autor | Zpráva | ||
---|---|---|---|
Kiko Profil * |
#1 · Zasláno: 1. 7. 2007, 09:17:24
<?php
ob_start(); session_start(); if(isset($_POST['prihlmeno'])){ require 'db.php'; $name = $_POST['prihlmeno']; $pass = md5($_POST['heslo']); $query = MySQL_Query("SELECT * FROM `uzivatelia` WHERE `prihlmeno` = '$name' and `heslo` = '$pass'") or die (mysql_error()); $Vysledek = mysql_fetch_array($query); $Vysledek['prihlmeno']; if($Vysledek['prihlmeno']){ $_SESSION['prihlasen'] = 1; $_SESSION['nick'] = $Vysledek['nick']; $_SESSION['email'] = $Vysledek['email']; $bl="uvod.php"; header("location: $bl"); // }else{ $bl="login.php?Alert=6"; header("location: $bl"); echo "Zadal jsi špatné údaje"; } mysql_free_result($query); }else{ echo "Zde nic není."; } ob_end_flush(); ?> ...................................................................... .......... newie mi niekto poradit kde mam chybu?? nejako mi to neslape |
||
Taps Profil |
#2 · Zasláno: 1. 7. 2007, 10:02:01
Kiko
Vypisuje ti to nějakou chybu, a nebo se ti třeba jen zobrazí bílá stránka? |
||
Kiko Profil * |
#3 · Zasláno: 1. 7. 2007, 10:40:05
nikdy ma to neprihlasi...aj ked su udaje spravne aj ked su nespravne
|
||
na1k Profil * |
#4 · Zasláno: 1. 7. 2007, 11:11:30
Co konkrétně má dělat řádek
$Vysledek['prihlmeno']; ? ...a osobně bych namísto kontrolování $vysledek['prihlmeno'] kontroloval jenom jestli mysql_num_rows($query)==1 ... asi v tom není žádný rozdíl, je to jenom pocit :-p Jinak by bylo dobré vědět, co znamená nikdy ma to neprihlasi. Je to tak, že se skript přesměruje na adresu pro špatně zadané údaje? Nebo na uvod.php ale uživatel se nejeví jako přihlášený? |
||
Taps Profil |
#5 · Zasláno: 1. 7. 2007, 11:18:15
Kiko
Zkus to třeba takto <?php ob_start(); session_start(); if(isset($_POST['prihlmeno'])){ require 'db.php'; $name = $_POST['prihlmeno']; $pass = md5($_POST['heslo']); $query = MySQL_Query("SELECT * FROM `uzivatelia` WHERE `prihlmeno` = '$name' and `heslo` = '$pass'") or die (mysql_error()); $Vysledek = mysql_fetch_array($query); if(mysql_num_rows($query==1)){ $_SESSION['prihlasen'] = 1; $_SESSION['nick'] = $Vysledek['nick']; $_SESSION['email'] = $Vysledek['email']; $bl="uvod.php"; header("location: $bl"); // }else{ $bl="login.php?Alert=6"; header("location: $bl"); echo "Zadal jsi špatné údaje"; } mysql_free_result($query); }else{ echo "Zde nic není."; } ob_end_flush(); ?> |
||
krteczek Profil |
#6 · Zasláno: 1. 7. 2007, 11:19:54
$Vysledek['prihlmeno']; // toto je tam proč?
dej na začátek scriptu error_reporting(E_ALL); jestli ti to něco vypíše, tipuji že to skončí právě na řádku: $Vysledek['prihlmeno']; dále si dej pozor na to co ti jde do $jmeno, nejjednodužší bude přidat sloupeček do tabulky a v něm udržovat md5 hashe jmen a při dotaze se ptej na oba ty hashe. cokoliv napíše do jedné z proměnných bude vždy převedeno na bezpečný řetězec testuj jestli ti databáze vrátila nějaký výsledek, chybu, nebo nebyl nalezen žáden relevantní výsledek |
||
buck Profil * |
#7 · Zasláno: 1. 7. 2007, 11:30:08
Mě to funguje...takže ve scriptu chyba není, ale v mysql, zkontroluj si sloupce, názvy sloupců, tabulku.
Nezkoušel jsem session, pokud v uvod.php kontroluješ session, zkus nejdřív přesměrovat na stránku, kde session nekontroluješ...pokud se to tam přihlásíš, je chyba v kontrole session. + já osobně bych kontroloval submit, než odeslaný input |
||
Kiko Profil * |
#8 · Zasláno: 1. 7. 2007, 12:03:27
hm..problem je ze ma to stale hodi na tu stranku pre spatne zadane udaje :S
|
||
buck Profil * |
#9 · Zasláno: 1. 7. 2007, 12:08:31
a co si zkoušel udělat?
|
||
Kiko Profil * |
#10 · Zasláno: 1. 7. 2007, 12:10:06
tabulku a stlpce mam dobre.... skusil som to s tym if(mysql_num_rows($query==1))
|
||
Kiko Profil * |
#11 · Zasláno: 1. 7. 2007, 12:13:31
nemam chybu v logine??
.................................. <form action="login_zpracuj.php" method="post"> <input type="hidden" name="send" value=""/> Prihlasovacie meno: <input type="text" name="prihlmeno"> Heslo: <input type="password" name="heslo"> <input type="submit" name="send" value="Prihlásiť"> </form> |
||
buck Profil * |
#12 · Zasláno: 1. 7. 2007, 12:50:37
jak jsem říkal, mě ten script fungoval, jediný co sem změnil je přihlášení do DB (takže i jména sloupců), md5 hesla, přesměřování a přihlásil jsem se normálně
|
||
na1k Profil * |
#13 · Zasláno: 1. 7. 2007, 12:51:05
Tak zkus spustit ten samý dotaz na databázi přímo v PhpMyAdminovi nebo jiném rozhraní pro mysql. Za $name doplň svoje jméno a za $pass md5 hesla, to získáš např. přes PSPad (nástroje/Otisk). Jestli ti to nevyhodí žádný nalezený řádek při správně zadaných údajích, tak to bude v db - např. příliš krátký varchar pro sloupec s md5 hesla (to potřebuje 32 znaků).
|
||
Kiko Profil * |
#14 · Zasláno: 1. 7. 2007, 18:15:30
nejde mi to...vobec...newiem ush v com je problem
|
||
Kiko Profil * |
#15 · Zasláno: 2. 7. 2007, 11:02:44
:(
|
||
krteczek Profil |
#16 · Zasláno: 3. 7. 2007, 00:01:14
Kiko: když něco nejde tak hledám co a proč.
1. po načtení stránky si echnu to co se mi poslalo z formuláře echo var_dump($_POST); 2. postupne si echnu vsecny mezivysledky 3. zakomentuji presmerovani, a echnu si tam pomocne texty, nebo obsahy promennych 4. odsazuj text skriptu podle nejakeho rozumneho zpusobu, toto:
se čte rozhodne hure než:
|
||
rimidalf Profil * |
#17 · Zasláno: 3. 7. 2007, 12:58:51
jen glosa k loginname a MD5.
Pouzivam MD5 nejak takto: if ($_POST[fjmeno] !='' ){ $md5_fjmeno = md5(strtoupper(StrTr($_POST[fjmeno], "áäčďéěëíňóöřšťúůüýžÁÄČĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽ", "aacdeeeinoorstuuuyzAACDEEEINOORSTUUUYZ"))); } SQL takto: WHERE md5(upper(u.loginname)) = '$md5_fjmeno' A funguje.... |
||
krteczek Profil |
#18 · Zasláno: 3. 7. 2007, 13:48:25 · Upravil/a: krteczek
rimidalf: proč odstranuješ z textu před hashováním diakritiku, a proč ten text převádíš na velká písmena? obojí je naprosto zbytečné. Funkcím md5 a sha1 je naprosto jedno jaký text se v proměnné skrývá, jejich úkolem je z něj vyrobit 32 (md5) a 40 (sha1) znakový řetězec.
něco jiného je přidávání soli k původnímu textu (k heslu se přidá náhodně vygenerovaný řetězec a celé se to zahashuje => dve stejné hesla mají jiný hash => musí se ukládat i sůl zvlášt do sloupce) |
||
rimidalf Profil * |
#19 · Zasláno: 4. 7. 2007, 01:07:33
2krteczek
Hash funkcim to jedno jest, jenze toto pouzivam v app, do ktere se nekteri uzivatele prihlasuji treba jen 1x za mesic kvuli vykazum a ver mi, log neuspesnych loginu mi dava za pravdu, ze nechapou, ze C a c nebo č neni totez (obcas vypadaj, ze nevi, ci jsou :-), ja navic tolik odvahy na hacky a carky v tomto sloupci DB nemam, ted volaji minimalne, pravda, pro jistotu jim po spravnem prihlaseni ulozim jejich loginname do kolacku, preci jen co lze, musi pracovat samo. Takze, piste si velkym, malym, česky, je mi to sumak. A proc to prevadim i v DB? Zpetna kompatibilita, loginname je zcasti pouzit v realcich (diky Jirko Z.), lepe se v tom hleda nez nejaky uzivatel 3432... |
||
krteczek Profil |
#20 · Zasláno: 4. 7. 2007, 02:51:18
rimidalf: tvé řešení je pohodlné pro všechny ale bezpečné není ;-)
|
||
rimidalf Profil * |
#21 · Zasláno: 5. 7. 2007, 01:10:18
2krteczek
Proc ne? Nejak nechapu? Na heslo jim nesaham a maji jen par pokusu, jejihz prekroceni mi prijde mailem, pak volaji nebo cekaji, nez se odemkne. No a mimo jejich CAPS LOCKu & spol nechodi nic. |
||
Časová prodleva: 17 let
|
0