« 1 2 »
Autor Zpráva
Venushja
Profil
Zdravim vas lidi mam tu velky problem s prihlasenim.
Problem je v tom ze kdyz vyplnil Login a Heslo tak se nic ale vubec nic nestane
Zde je Kod
<?
$db_server = "mysql.ic.cz";
$db_login = "****";
$db_password = "*****";
$db_name = "******";
@$spojeni = MySQL_Connect($db_server ,$db_login, $db_password);
@MySQL_Select_DB($db_name);


if(empty($_COOKIE["ucet"])){

?>
<form method="post">
Login : <input type="text" name="login" class="input">
Heslo : <input type="password" name="passwd">
<input type="submit" value="Přihlásit">
</form>
<?

$pass=sha1(MD5($passwd));
$datum = date("d.m.Y");


$bb = MySQL_Query("SELECT * FROM users where login ='$login'");
$uu = MySQL_Query("SELECT count(*) FROM users");
$tt=MySQL_Fetch_Array($uu);
while ($db= MySQL_Fetch_Array($bb)):
if($db[password]==$pass){
MySQL_Query("UPDATE `users` SET `lastlog` = '$datum' WHERE `users`.`login` ='$login'");
SetCookie ("ucet", "$login");
echo"Jste úspěšně nalogován!
<meta http-equiv='refresh' content='10'> pokud se vám stránka neobnoví do 10 sekund klikněte <a href='index.php'>sem</a>";
}
endwhile;

$bb = MySQL_Query("SELECT * FROM users where login ='$login'");
$uu = MySQL_Query("SELECT count(*) FROM users");
$tt =MySQL_Fetch_Array($uu);
while ($db= MySQL_Fetch_Array($bb)):
if($login!=$db[login]){echo'<font color="red">Vyplnil jste špatně login nebo heslo</font>';};
endwhile;
}else{echo"Funguje to?";};


?>


na zadnou podminku nereaguje a uz si s tim nevim rady po 3 dnech skouseni :-(
Aesir
Profil
Venushja:
Zkuste nahradit $passwd za $_POST['passwd'] a analogicky to samé pro $login. Nebylo by od věci ty proměnné taky trochu ošetřit ;)
Register Globals
Venushja
Profil
Venushja:
Zkuste nahradit $passwd za $_POST['passwd'] a analogicky to samé pro $login. Nebylo by od věci ty proměnné taky trochu ošetřit ;)
Register Globals
Ne furt ty podminky nereagujou...Ani nevim v cem by to mohlo byt nastaveny to vsechno je ale nereaguje to :-(
bohyn
Profil
<?
// kontrola odeslani formulare
if(isset($_POST['login'])) {
  $pass=sha1(MD5($_POST['passwd']));

  // login kontroluj zaroven s heslem
  $bb = MySQL_Query("SELECT * FROM users WHERE login = '".$_POST['login']."' AND password = '".$pass."'");

  // K cemu potrebujes poctet uzivatelu v DB?
  //$uu = MySQL_Query("SELECT count(*) FROM users");
  //$tt=MySQL_Fetch_Array($uu);

  if(mysql_num_rows($bb) == 1) {
    MySQL_Query("UPDATE `users` SET `lastlog` = '".$datum."' WHERE `login` ='".$login."'");
    SetCookie ("ucet", "$login");
    echo"<html><head><meta http-equiv='refresh' content='10'></head>Jste úspěšně nalogován!  pokud se vám stránka neobnoví do 10 sekund klikněte <a href='index.php'>sem</a>";
  }
  // chybne zadane heslo nebo uzivatelske jmeno
  else {
    echo "Chybny login";
  }
}
// neprihlaseny
elseif(!isset($_COOKIE['ucet'])) {?>
  <form method="post">
  Login : <input type="text" name="login" class="input">
  Heslo : <input type="password" name="passwd">
  <input type="submit" value="Přihlásit">
  </form>
<? } ?>
Venushja
Profil
bohyn
Hele tendle script funugje akorad nako divne zadam login a heslo a misto prihlasen mi to napise chybny login :-(
bohyn
Profil
Venushja
Mozne duvody:
- v databazi musi byt prave jeden par login/password
- login i heslo jsou citlive na velikost znaku

oprava updatu:
$datum = date("d.m.Y");
MySQL_Query("UPDATE `users` SET `lastlog` = '".$datum."' WHERE `login` ='".$_POST['login']."'");

A dale by se hodilo osetrit login proti SQL injection, pred vlozenim do dotazu:
$_POST['login'] = mysql_real_escape_string($_POST['login'])
Venushja
Profil
bohyn
Tak par urcite tam je :-)
Znaky jsou v poho.
Hele a na me ne tak honem a slozite nejsem zas tak zkusenej :-)
A furt to pise To chybny login :-(

edit:Kdyz jsem zmenil pihlaseni do DB na jiny stranky kde mam users atd prihlaseni vsechno tak to se prihlasi a objevi se to ale kdyz tam zadam tu databazi co tam mam tedka tak to naúpise chybny login
bohyn
Profil
Venushja
Tak si jeste zkus vypsat vstupy po tom prvnim dotazu na databazi a porovnej to s tim co v ni skutecne mas:
echo $pass."<br>"
    .$_POST['login']."<br>"
    .mysql_num_rows($bb);
Venushja
Profil
bohyn
Tak uz asi vim v cem je rpoblem v heslu
vypsalo mi to toto:
adcd7048512e64b48da55b027577886ee5a36350
Mutagen
0
Chybny login
a v DB mam heslo toto:
0303c6e6494c502e4d59900f69cc50b92eda0865
ale divny je to ze oboje koduju pres sha1(MD5($pass))
bohyn
Profil
Venushja
- Zkus znovu vytvorit ucet, treba ti to tam zustalo z drivejska kdyz si pouzival neco jineho.
- pokud mas diakritiku v hesle, muze to zpusobovat jine kodovani registracniho formulare a prihlasovaciho.
Venushja
Profil
bohyn
Heslo mam 123 jsem daval rpi registraci a pri nalogovani taky v Databazi se ukazuje jenom 1 kodovaci heslo a to todle 0303c6e6494c502e4d59900f69cc50b92eda0865 at zadam jakykoliv heslo do adresare na heslo :-( divny kodovani pres sha1 a md5 v obojim pripade tak nevim no.
bohyn
Profil
Venushja
adcd7048512e64b48da55b027577886ee5a36350 odpovida 123. Problem bude nekde v registraci.
Venushja
Profil
bohyn
No ale kde Koduju to pres sha1 a MD5 jako todle posilam script na registraci ale me se zda ze to je nesmysl kodovani je prece stejne
case 'registrace':
$datum=date("d.m.Y");
$password=sha1(MD5($pass));

$db_server = "mysql.ic.cz";
$db_login = "ic_pkde";
$db_password = "*****";
$db_name = "ic_pkde";
@$spojeni = MySQL_Connect($db_server ,$db_login, $db_password);
@MySQL_Select_DB($db_name);

    if($login=="" or $pass=="" or $jmeno==""){
        echo'<br><br>
       <form method=post>
        Login:<br>
        <input type="text" name="login" class="input"><br><br>
       Password:<br>
        <input type="text" name="pass"><br><br>
       Jmeno a Příjmení:<br> 
        <input type="text" name="jmeno"><br><br>
        <INPUT type="submit" value="Registrovat">
        </form>';}
    else{
$bb = MySQL_Query("SELECT * FROM users order by id DESC LIMIT 20");
$uu = MySQL_Query("SELECT count(*) FROM users");
$tt=MySQL_Fetch_Array($uu);
while ($db= MySQL_Fetch_Array($bb)):
if($login==$db[login])
{
echo"<br><br>Účet s názvem <span style='color:red'>$login</span> už existuje<br><br><br>
<input value='          Zpět          ' onclick='JavaScript:history.back()' class='input' type='button'>
";die;};
endwhile;
        echo"<h2>Registrace Dokončena<br>
    <a href='index.php'>Můžeš se přihlásit</a></h2></div>";
    MySQL_Query("INSERT INTO users VALUES('','$login','$password','$jmeno','$datum','')");
    };
    break;
bohyn
Profil
Problem kde se bere spatne heslo jsem nenasel, ale zkus tento script:

nazvy sloupcu si zmen na to co mas v databazi (u vkladani do DB)
// nebyly odeslany zadne nebo jen nektere registracni udaje
if($_POST['login'] == "" or $_POST['pass'] == "" or $_POST['jmeno'] == ""){
  echo'<br><br>
      <form method=post>
      Login:<br>
      <input type="text" name="login" class="input" value="'.$_POST['login'].'"><br><br>
      Password:<br>
      <input type="text" name="pass"><br><br>
      Jmeno a Příjmení:<br> 
      <input type="text" name="jmeno" value="'.$_POST['jmeno'].'"><br><br>
      <input type="submit" value="Registrovat">
      </form>';
}
// vsechny registracni udaje byly odeslany
else{
  $db_server = "mysql.ic.cz";
  $db_login = "ic_pkde";
  $db_password = "*****";
  $db_name = "ic_pkde";
  @$spojeni = MySQL_Connect($db_server ,$db_login, $db_password);
  @MySQL_Select_DB($db_name);

  $datum=date("d.m.Y");
  $password=sha1(MD5($_POST['pass']));

  // osetrit vkladane promene proti SQL injection
  $_POST['login'] = mysql_real_escape_string($_POST['login']);
  $_POST['jmeno'] = mysql_real_escape_string($_POST['jmeno']);

  // zjistit jestli uzivatelske jmeno existuje  v databazi
  $bb = MySQL_Query("SELECT login FROM users WHERE login LIKE '".$_POST['login']."' LIMIT 1");

  // uzivatelske jmeno bylo nalezeno, vratit chybu
  if(mysql_num_rows($bb) == 1) {
    echo"<br><br>Účet s názvem <span style='color:red'>".$_POST['login']."</span> už existuje<br><br><br> <input value='          Zpět          ' onclick='JavaScript:history.back()' class='input' type='button'>";
    die;
  }

  // uzivatelske jmeno neni v databazi. Vlozit registracni udaje do DB

  echo"<h2>Registrace Dokončena<br>
  <a href='index.php'>Můžeš se přihlásit</a></h2></div>";

  // pri vkladani do DB je lepsi explicitne vyjmenovat sloupecky
  MySQL_Query("INSERT INTO users
               (login, heslo, jmeno, datum_registrace)
               VALUES ('".$_POST['login']."', '".$password."', '".$_POST['jmeno']."', '".$datum."')");
  }
}
break;
Venushja
Profil
bohyn
Jak uz jsem rikal na me nemuzes s takhle tezkejma scriptama jsem neco jako novacek akorad toho umim o neco vic :-D
a vubec se v tom scp co jsi poslal nevyznam teda jen v nekterych casti :-D
bohyn
Profil
Venushja
Predchozi prispevek jsem doplnil o nektere komentare, mozna se v tom lip vyznas.

Kod vloz misto toho co jsi posilal (prvni radek "case 'registrace':" tam nech) a vyzkousej.
Venushja
Profil
Tak jsem skusil jeste 1 moznost oddelal jsem z registrace to kodovani aby se to v databazi ukazalo to heslo ale stejne to je furt zakovodany tak vubec nevim co s tim je to zakodovany jako kdyby to tam bylo akorad se zmenilo to zakodovani ale nevim kde se to zakodovalo kdyz tam uz nemam ten prikaz na to
bohyn
Profil
Venushja
Pravdepodobne mas na sloupecek s heslem navazanou nejakou funkci.
Venushja
Profil
bohyn
No ale na jakou skousel jsem ten tvuj scp a dela to stejny pri registraci jsem dal heslo q napsalo mi to todle
a73afd7b4f19571927e4e0c87103c35b9a195556
q
0
Chybny login
A heslo v Databazi se ukazalo jako todle
67a74306b06d0c01624fe0d0249a570f4d093747
Uz fakt nevim co s tim :-(
Venushja
Profil
bohyn
ne beru zpet ten tvuj script funguje najednicku :-) ja tam mel spatne nastavenou MySQL query :-) Uz to registruje i dokonce to Prihlasuje :-)
Venushja
Profil
Hele muzu se jeste zeptat co to je ten sql injection?? ze se to musi osetrovat?
bohyn
Profil
Venushja
SQL injection je ze v pasujes do promene jiny SQL dotaz, nebo jeho cast.
Mam SQL dotaz:
SELECT * FROM tabulka WHERE id = $id

Pokud je id cislo nic se nedeje. Pokud tam ale nekdo zmeni id na "1; DROP TABLE tabulka;" tak vznikne
SELECT * FROM tabulka WHERE id = 1; DROP TABLE tabulka;

Tak prides o tabulku a vsechna data co v ni mas.

Proto se cisla explicitne prevadeji na ciselne typy, treba:
$id = (int)$id;

a retezce se osetruji (nejlepe) pomoci mysql_real_escape_string():
$str = mysql_real_escape_string($str);


Neco malo je o tom na ceske wikipedii - SQL injection. Pokud umis anglicky tak anglicka verze je mnohem obsahlejsi.
Venushja
Profil
jj dik moc ale mam tu rpoblem s tim scriptem co jsi me poslal na prihlaseni :-) Chci aby se po prihlasení objevilo Napr neco jako Prihlasen : $login
a neco podobnyho ale nevim jak to do toho tvyho scriptu vlozit
bohyn
Profil
uzivatelske jmeno mas ulozeno v cookies staci tedy
echo "Prihlasen: ".$_COOKIE['login'];

Funguje az po nacteni dalsi stranky po prihlaseni. Pokud to chces vypsat na te strance "Jste úspěšně nalogován!" tak dej
echo $_POST['login'];
Venushja
Profil
bohyn
A bude to tam kdyz obnovim tu stranku atd ?
Venushja
Profil
bohyn
Tak to asi malo nechapu nechces mi to cast napsat kam to mam napsat?
Rikam zas tak hodne skusenej nejsem a s Cookies se ucim teprv ty 2 nebo 3 dny co jsme psal todle rpihlaseni :-D
bohyn
Profil
Stanka 1:
// nastavit cookie
setcookie("login", $_POST['login']);
// vypsat cookie
echo $_POST['login'];


Stranka 2:
// vypsat hodnotu cookie
echo $_COOKIE['login'];


Na stance 1 nastavis hodnotu cookie, ale promena $_GOOKIE['login'] jeste neni dostupna, je treba pouzit $_POST['login'] nebo
$_COOKIE['login'] = $_POST['login'];
echo $_COOKIE['login'];


Na vsech dalsich strankach uz bude gungovat $_COOKIE['login']. Dokud nezavres prohlizec.
Venushja
Profil
bohyn
Tak tady budu mit rpoblem :-D Ja to nemam na 2 stranky ale mam to na 1 v menu to prihlaseni takze se to obnovi na tu stejnou stranku
skus to sa co ti to udela www.pkde.ic.cz prihlas se Login : o a heslo : o skus to a az se to obnovi tak se v tom miste nic neobjevi odhlasis se timdle www.pkde.ic.cz/index.php?page=logout
Skus to a rekni mi do jakyho mista mam napsat to Prihlasen : $login

Edit : Jedine ze bych mohl udelat 2 menu a po prihlaseni by se objevilo to 2 menu a po odhlaseni to 1
radas
Profil *
a co když uživatel bude mit vypnuté cookie? nebylo by lepší do session?
bohyn
Profil
Venushja
Nepochopil si co sem se snazil rict.
Stranka 1 = stranka na ktere nastavujes cookie
Stranka 2 = Jakakoliv stranka po refreshi. Na nazvu stranky nezalezi.

Takze kdyz na index.php nastavis cookie, pak das refresh tak cookie bude fungovat.

Vyzkousej si tohle:
// cookie.php

if(!isset($_COOKIE['test'])) {
  setcookie("test", "Ahoj");
  echo "Cookie, neni nastavena";
}
else {
  echo "Cookie 'test' = ".$_COOKIE['test'];
}


Uloz si to na server, nacti v browseru a pak dej F5.
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0