Avaleht
uus teema   vasta Tarkvara »  WWW »  Log in kasutaja kontroll märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
mine lehele 1, 2  järgmine
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 14.04.2009 15:59:29 Log in kasutaja kontroll vasta tsitaadiga

Tervist jälle. Aretan väikest login scripti aga vajaks abi kasutaja nime ja parooli kontrollimisega andmebaasist.
Üleval kontrollib kas on andmed sisestatud, see töötab kuni üritasin lisada kontrolli kas kasutaja ja parool klapivad andmebaasis olevatega.
Hetkel tuleb kohe lehele ette, et parool/nimi sisestamata etc.
www.redenergy.org/test/sisene2.php

php:
  1. <?php
  2. include 'sql.php';
  3. ini_set('display_errors', '1');
  4.  
  5. $tulemus=true;
  6. $msg='';
  7.  
  8. if(!isset($_POST['nimi']) || strlen($_POST['nimi']) < 2){
  9.     $msg.="<B>Nimi</B> sisestamata.<BR>";
  10.     $tulemus=false;
  11. }
  12. if(!isset($_POST['parool']) || strlen($_POST['parool'])  < 4){
  13.     $msg.="<B>Parool</B> sisestamata.<BR>";
  14.     $tulemus=false;
  15. }
  16. if(isset($_POST['submit'])) {
  17.  
  18. $nimi=$_POST['nimi'];
  19. $parool=$_POST['parool'];
  20. //MySQL injection
  21. $nimi = stripslashes($nimi);
  22. $parool = stripslashes($parool);
  23. $nimi = mysql_real_escape_string($nimi);
  24. $parool = mysql_real_escape_string($parool);
  25. $result = mysql_query("SELECT * FROM kasutajad WHERE nimi = '$nimi' AND parool = '$parool'");
  26. $row = mysql_fetch_array($result);
  27. if($nimi==$row['nimi']) {
  28.     $msg.="<B>Nimi</B> ei klapi andmebaasiga.<BR>";
  29.     $tulemus=false;
  30. }
  31. if($row['parool']==$parool) {
  32.     $msg.="<B>Parool</B> ei klapi andmebaasiga.<BR>";
  33.     $tulemus=false;
  34. }
  35. if($tulemus){
  36.     echo 'Sisse logitud!'; }
  37.   } else {
  38.     echo $msg;
  39.   }
  40. ?>
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
Valdars
HV veteran
Valdars

liitunud: 22.02.2003




sõnum 14.04.2009 16:09:42 vasta tsitaadiga

Areta mingi korralik kontroll vaatamaks, kas kasutaja on üldse proovinud sisse logida.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 44
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 14.04.2009 16:21:13 vasta tsitaadiga

Parooli ei salvesta me andmebaasis puhtal kujul, kasuta vähemasti SHA1 hashi, soovitavalt koos soolamisega.
http://en.wikipedia.org/wiki/Salt_(cryptography)
http://phpsec.org/articles/2005/password-hashing.html
Eelis turva osas selles osas et kui sinu andmebaas kuidagi pihta pannakse, siis ei saada sealt niisama kergelt kasutajate paroole kätte.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 14.04.2009 16:27:21 vasta tsitaadiga

mikk36 kirjutas:
Parooli ei salvesta me andmebaasis puhtal kujul, kasuta vähemasti SHA1 hashi, soovitavalt koos soolamisega.
http://en.wikipedia.org/wiki/Salt_(cryptography)
http://phpsec.org/articles/2005/password-hashing.html
Eelis turva osas selles osas et kui sinu andmebaas kuidagi pihta pannakse, siis ei saada sealt niisama kergelt kasutajate paroole kätte.

Just, see on plaanis teha ka kindlasti. Aga enne kui hakkan teisi asju sinna lisama tahaks errori kuvamise valmis teha.

Kui oskaksin seda kontrolli teha siis ei pöörduks WWW teemasse icon_razz1.gif
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
Valdars
HV veteran
Valdars

liitunud: 22.02.2003




sõnum 14.04.2009 16:34:27 vasta tsitaadiga

Veel üks võimalus sisselogimise tegemiseks.
Kommentaarid: 47 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 44
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 14.04.2009 16:39:49 vasta tsitaadiga

HTTP Auth miinuseks on võimetus seda ümber kujundada ja andmebaasiga kontrollimise poolest ei erine see mitte millegi poolest tavalisega.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 14.04.2009 17:20:23 vasta tsitaadiga

Ehkist peaks ülemise kontrolli ära jätma üldse ja ainult sql tabelist kontrollima?
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 14.04.2009 17:33:33 vasta tsitaadiga

tsitaat:
Hetkel tuleb kohe lehele ette, et parool/nimi sisestamata etc


if(isset($_POST['nimi']) AND strlen($_POST['nimi']) < 2){

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 14.04.2009 18:09:03 vasta tsitaadiga

See ei funkand.
Ma ei saa aru miks ta nende:
php:
  1. $nimi=$_POST['nimi'];
  2. $parool=$_POST['parool'];

kohta hakkab loopima:
Notice: Undefined index: nimi in /home/redenerg/public_html/test/sisene2.php on line 27

Notice: Undefined index: parool in /home/redenerg/public_html/test/sisene2.php on line 28
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
DoS
HV veteran
DoS

liitunud: 19.08.2002




sõnum 14.04.2009 18:46:51 vasta tsitaadiga

http://devzone.zend.com/node/view/id/627
Kommentaarid: 50 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 47
tagasi üles
vaata kasutaja infot saada privaatsõnum
e-Thug
HV Guru
e-Thug

liitunud: 26.02.2005




sõnum 14.04.2009 18:55:06 vasta tsitaadiga

if(isset($_POST['submit'])) {


Nihuta see reale nr 8 ja vaata siis edasi.
Kommentaarid: 230 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 205
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 14.04.2009 19:55:22 vasta tsitaadiga

Kuidas ei tööta? Täiesti toimiv. Kui ei ole saadetud midagi siis ei tee midagi, kui saadad andmed, siis läheb edasi.

<?php
include 'sql.php';
ini_set('display_errors', '1');
error_reporting(E_ALL);

$tulemus=true;
$msg='';

if(isset($_POST['nimi']) AND strlen($_POST['nimi']) < 2){
    $msg.="<B>Nimi</B> sisestamata.<BR>";
    $tulemus=false;
}
if(isset($_POST['parool']) AND strlen($_POST['parool'])  < 4){
    $msg.="<B>Parool</B> sisestamata.<BR>";
    $tulemus=false;
}
if(isset($_POST['submit'])) {

$nimi=$_POST['nimi'];
$parool=$_POST['parool'];
//MySQL injection
$nimi = stripslashes($nimi);
$parool = stripslashes($parool);
$nimi = mysql_real_escape_string($nimi);
$parool = mysql_real_escape_string($parool);
$result = mysql_query("SELECT * FROM kasutajad WHERE nimi = '$nimi' AND parool = '$parool'");
$row = mysql_fetch_array($result);
if($nimi==$row['nimi']) {
    $msg.="<B>Nimi</B> ei klapi andmebaasiga.<BR>";
    $tulemus=false;
}
if($row['parool']==$parool) {
    $msg.="<B>Parool</B> ei klapi andmebaasiga.<BR>";
    $tulemus=false;
}
if($tulemus){
    echo 'Sisse logitud!'; }
  } else {
    echo $msg;
  }
?>

************************************************************
siin on sul veidi vales kohas see if lõpetatud. Hetkel on ju nii, et kui submit on, siis võrdleb neid MySL veateateid ja else käib selle submit if kohta, kui ei ole submit, siis kuvab vea. Peaksid selle viimase punase sulu viima päris lõppu. Või sa soovidki sedasi?

if(isset($_POST['submit'])) {
// siin su MySQL
if($nimi==$row['nimi']) {
$msg.="<B>Nimi</B> ei klapi andmebaasiga.<BR>";
$tulemus=false;
}
if($row['parool']==$parool) {
$msg.="<B>Parool</B> ei klapi andmebaasiga.<BR>";
$tulemus=false;
}
if($tulemus){
echo 'Sisse logitud!'; }
}
else {
echo $msg;
}

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
e-Thug
HV Guru
e-Thug

liitunud: 26.02.2005




sõnum 14.04.2009 19:56:41 vasta tsitaadiga

andrusny

AND strlen($_POST['nimi']) < 2)

miks sa arvad, et ta ühetähelist logini proovis. See peaks pigem > 2 siis olema. Redenergy kontekstis sobiks < 2, sinu omas aga mitte.
Kommentaarid: 230 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 205
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 14.04.2009 20:03:05 vasta tsitaadiga

Vahet pole, see juba muu teema. Ta ei saanud ju seda if lauset käima, kuna oli ennem !isset($_POST['nimi']) mis tähendab, et kui pole postitust, tee seda. Seda, kuidas ta oma nime pikkust kontrollib on juba tema otsustada. Hetkel on, et nimi ei tohi olla lühem kui 2 tähemärki.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
e-Thug
HV Guru
e-Thug

liitunud: 26.02.2005




sõnum 14.04.2009 20:09:54 vasta tsitaadiga

andrusny kirjutas:
Vahet pole, see juba muu teema. Ta ei saanud ju seda if lauset käima, kuna oli ennem !isset($_POST['nimi']) mis tähendab, et kui pole postitust, tee seda. Seda, kuidas ta oma nime pikkust kontrollib on juba tema otsustada. Hetkel on, et nimi ei tohi olla lühem kui 2 tähemärki.

Sinu koodist loen mina välja, et kui on postitus ja nimi on lühem kui 2..
Kuna redenergy üsna tõenäoliselt kasutas pikemat, siis if ei matchi.
Kirjutad üht, mõtled teist icon_wink.gif

EDIT: ah kurat, ma peaks välja magama. icon_lol.gif
Kommentaarid: 230 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 205
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 14.04.2009 20:12:43 vasta tsitaadiga

Aga ta ei peagi ju toimima, kui on pikem, see on ju veateate if
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
e-Thug
HV Guru
e-Thug

liitunud: 26.02.2005




sõnum 14.04.2009 20:15:35 vasta tsitaadiga

andrusny kirjutas:
Aga ta ei peagi ju toimima, kui on pikem, see on ju veateate if
Jep, sellest mu eelmise posti edit. Tööpäev seljataga, kuul on kergelt koos juba.
Kommentaarid: 230 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 205
tagasi üles
vaata kasutaja infot saada privaatsõnum
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 14.04.2009 21:39:19 vasta tsitaadiga

Väga sheff, hetkel töötab errori süsteem nagu plaanisin.
Aga järgmine probleem on see, et isegi kui sisestan suvalised andmed näitab ta sisse logitud.
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 14.04.2009 22:11:38 vasta tsitaadiga

Kas andmebaasi sisse oled loginud? Selles koodis küll ei ole sisse logimist (kui mitte sql.php failis)

Pane oma andmed sisse ja töötab, kui sul andmebaas ja tabel olemas on.

<?php
//include 'sql.php';
$mysql_host = "localhost";
$mysql_database = "dumcoff";
$mysql_user = "root";
$mysql_password = "";

ini_set('display_errors', '1');
error_reporting(E_ALL);

$tulemus=true;
$msg='';

if(isset($_POST['nimi']) AND strlen($_POST['nimi']) < 2){
    $msg.="<B>Nimi</B> sisestamata.<BR>";
    $tulemus=false;
}
if(isset($_POST['parool']) AND strlen($_POST['parool'])  < 4){
    $msg.="<B>Parool</B> sisestamata.<BR>";
    $tulemus=false;
}
if(isset($_POST['submit'])) {

$nimi=$_POST['nimi'];
$parool=$_POST['parool'];
//MySQL injection
$nimi = stripslashes($nimi);
$parool = stripslashes($parool);

$connect=mysql_connect($mysql_host, $mysql_user, $mysql_password);
mysql_select_db ($mysql_database , $connect);

$nimi = mysql_real_escape_string($nimi);
$parool = mysql_real_escape_string($parool);
//$nimi="Andrus"; $parool="Kroku";

$result = mysql_query("SELECT * FROM kasutajad WHERE nimi='$nimi' AND parool='$parool'");
// AND parool = '$parool'
$row = mysql_fetch_array($result);
//mysql_fetch_assoc
echo "Saabusid nimi $nimi ja parool $parool <br> veateade on $msg<br><br> $row[nimi]";
if($nimi==$row['nimi']) {
    $msg.="<B>Nimi</B> ei klapi andmebaasiga.<BR>";
    $tulemus=false;
}
if($row['parool']==$parool) {
    $msg.="<B>Parool</B> ei klapi andmebaasiga.<BR>";
    $tulemus=false;
}
if($tulemus){
    echo 'Sisse logitud!'; }
   else {
    echo $msg;
  }}
?>

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 14.04.2009 22:20:22 vasta tsitaadiga

Oma jõududega sain nii:
php:
  1. <?php
  2. include 'sql.php';
  3. ini_set('display_errors', '1');
  4.  
  5. $tulemus=true;
  6. $msg='';
  7. if(isset($_POST['submit'])) {
  8. $nimi=$_POST['nimi'];
  9. $parool=md5($_POST['parool'])
  10. if(isset($_POST['nimi']) AND strlen($_POST['nimi']) < 2){
  11.     $msg.="<B>Nimi</B> sisestamata.<BR>";
  12.     $tulemus=false;
  13. }
  14. if(isset($_POST['parool']) AND strlen($_POST['parool'])  < 4){
  15.     $msg.="<B>Parool</B> sisestamata.<BR>";
  16.     $tulemus=false;
  17. }
  18. //MySQL injection
  19. $nimi = stripslashes($nimi);
  20. $parool = stripslashes($parool);
  21. $nimi = mysql_real_escape_string($nimi);
  22. $parool = mysql_real_escape_string($parool);
  23.  
  24. $sql = ("SELECT * FROM kasutajad WHERE nimi='$nimi' AND parool='$parool'");
  25. $result = mysql_query($sql);
  26. if(mysql_num_rows($result) == 0){
  27. $msg.="<B>Nimi ja parool</B> ei klapi andmebaasiga.<BR>";
  28. $tulemus=false;
  29. }
  30. if($tulemus){
  31. echo 'Sisse logitud!'; }
  32. else {
  33. echo $msg;
  34. }
  35. }
  36. ?>

See töötas hästi kuni lisasin md5 kodeeringu paroolile. Liitu.php fail kodeerib ka md5'ks parooli.
Niisiis ei tea mis võib valesti olla.


sql.php juba ühendab andmebaasiga ära
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 14.04.2009 22:31:11 vasta tsitaadiga

Kui tahad,et kontrollitaks, kas nimi on sama mis andmebaasis, siis oleks vaja ju selliselt. Vähemasti su uues koodis kontrollitakse seda.
Siiani arvasin, et tahad vaadata, et baasis sarnast nime poleks.

if($nimi!=$row['nimi']) {
// ütled et nimi ei sobi andmebaasi omaga
}


Sul peab parool baasis ka md5 kodeeringuga olema salvestatud. Kui pole pole asjal ju mõtet. Katsetamiseks võid võtta parooli baasist ja lasta läbi md5 e
(see esimene peaks juba baasist tulema md5 na)

if(md5($row['parool'])==md5($parool)) {

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 14.04.2009 22:59:00 vasta tsitaadiga

Serveris on testiks mölemad.
nimi: loll parool: koll
nimi: loll parool: 2da5e8e81e4081571c85
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 14.04.2009 23:04:02 vasta tsitaadiga

Päringus peab ka md5 sees olema, kui baasis on md5 parool.

$parool = md5($parool);
$result = mysql_query("SELECT * FROM kasutajad WHERE nimi='$nimi' AND parool='$parool'");

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 16.04.2009 01:45:40 vasta tsitaadiga

kummaline on see, et liitu.php genereerib paroolist "test"
test 098f6bcd4621d373cade
aga sisene.php
test 098f6bcd4621d373cade4e832627b4f6

Sain veale jälile. Parooli varchar oli 20 pandud icon_lol.gif

Tundub, et script töötab, vaja veel kuidagi sessioonid teha.
--------------------------------------------------

Nii nüüd on uus probleem millele lehendust ei leia

Kõik muidu suht töötab aga annab
Notice: Undefined index: nimi in /home/redenerg/public_html/test/login.php on line 33
Notice: Undefined index: nimi in /home/redenerg/public_html/test/login.php on line 35
errori kui registreerimis form lahti on. Ma ei saa aru kuidas saab nimi olla undefined.
http://www.redenergy.org/test/

ja kui sisse logida (nimi:test psw: test) annab lehe alla teate:
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

refresh muljudes on jälle köik korras.
login.php
php:
  1. <?php
  2. include 'sql.php';
  3.  
  4. $tulemus=true;
  5. $msg='';
  6. if(isset($_POST['submit'])) {
  7.  
  8. if(isset($_POST['nimi']) AND strlen($_POST['nimi']) < 2){
  9.     $msg.="<p2><B>Nimi</B> sisestamata.<BR></p2>";
  10.     $tulemus=false;
  11. }
  12. if(isset($_POST['parool']) AND strlen($_POST['parool'])  < 4){
  13.     $msg.="<p2><B>Parool</B> sisestamata.<BR></p2>";
  14.     $tulemus=false;
  15. }
  16. $nimi=$_POST['nimi'];
  17. $parool=md5($_POST['parool'])
  18. $nimi = stripslashes($nimi);
  19. $parool = stripslashes($parool);
  20. $nimi = mysql_real_escape_string($nimi);
  21. $parool = mysql_real_escape_string($parool);
  22. $sql = ("SELECT * FROM kasutajad WHERE nimi='$nimi' AND parool='$parool'");
  23. $result = mysql_query($sql);
  24. if(mysql_num_rows($result) == 0){
  25. $msg.="<p2><B>Nimi ja parool</B> ei klapi.<BR></p2>";
  26. $tulemus=false;
  27. }
  28. if($tulemus){
  29. echo "<p3>Olete edukalt sisse logitud</br></p3>"; }
  30. else {
  31. echo $msg;
  32. }
  33. }
  34. if ( $_SESSION['nimi'] ):
  35. echo "Tere ".$_SESSION['nimi'];
  36. echo "</br>See koht siin on kasutajatele";
  37. endif;
  38. if ( ! $_SESSION['nimi'] ):
  39. ?>
  40. <form method='post' action=''>
  41. <table align='center'>
  42.   <tr>
  43.    <td class='pais' colspan='2' align='center'><p>Logi sisse</p></td>
  44.   </tr>
  45.   <tr>
  46.    <td class='kast'><p>Nimi: </p></td>
  47.    <td class='kast'><input type='text' name='nimi' class='input' /></td>
  48.   </tr>
  49.   <tr>
  50.    <td class='kast'><p>Parool: </p></td>
  51.    <td class='kast'><input type='password' name='parool' class='input' /></td>
  52.   </tr>
  53.    <td colspan='2' align='center' class='kast'>
  54.    <input type='submit' name='submit' value='Sisene' class='input' /></td>
  55.   </tr>
  56. </table>
  57. </form>
  58. <?php endif; ?>


--------------------------------------
nii tuleb kolmas edit icon_razz.gif
Aeg on öösse jõudnud aga sain löpuks valmis selle mida tahtsin.
Enam erroreid ei loobi ja süsteem töötab.
Veaks oli arvatavasti see, et sessiooni ei tohtinud teha olemasoleva nimega.
Panen üles siis töötava koodi, et teistele näha oleks kuidas õige oleks kui peaks sama probleem olema.
Tekstiosa on testimiseks.
php:
  1. <?php
  2. include 'sql.php';
  3.  
  4. $tulemus=true;
  5. $msg='';
  6. if(isset($_POST['submit'])) {
  7.  
  8. if(isset($_POST['nimi']) AND strlen($_POST['nimi']) < 2){
  9.     $msg.="<p2><B>Nimi</B> sisestamata.<BR></p2>";
  10.     $tulemus=false;
  11. }
  12. if(isset($_POST['parool']) AND strlen($_POST['parool'])  < 4){
  13.     $msg.="<p2><B>Parool</B> sisestamata.<BR></p2>";
  14.     $tulemus=false;
  15. }
  16. $nimi=$_POST['nimi'];
  17. $parool=md5($_POST['parool'])
  18. $nimi = stripslashes($nimi);
  19. $parool = stripslashes($parool);
  20. $nimi = mysql_real_escape_string($nimi);
  21. $parool = mysql_real_escape_string($parool);
  22. $sql = ("SELECT * FROM kasutajad WHERE nimi='$nimi' AND parool='$parool'");
  23. $result = mysql_query($sql);
  24. if(mysql_num_rows($result) == 0){
  25. $msg.="<p2><B>Nimi ja parool</B> ei klapi.<BR></p2>";
  26. $tulemus=false;
  27. }
  28. if($tulemus){
  29. $query = ("SELECT * FROM kasutajad WHERE nimi='$_POST[nimi]'");
  30. $tulem = mysql_query($query);
  31. $row = mysql_fetch_array($tulem);       
  32.  
  33. $_SESSION['sees']['id'] = $row['id'];
  34. $_SESSION['sees']['nimi'] = $_POST['nimi'];
  35. echo "<p3>Olete edukalt sisse logitud</br></p3>";
  36. echo "Tere : ".$_SESSION["sees"]['nimi'];
  37. echo "</br>See koht siin on ainult kasutajatele";
  38. }
  39. else {
  40. echo $msg;
  41. }
  42. }
  43. ?>
  44. <?php
  45. if(isset($_SESSION['sees']['id'])) {
  46. echo "Hei, ".$_SESSION['sees']['nimi'];
  47. } else {
  48. ?>
  49. <form method='post' action=''>
  50. <table align='center'>
  51.   <tr>
  52.    <td class='pais' colspan='2' align='center'><p>Logi sisse</p></td>
  53.   </tr>
  54.   <tr>
  55.    <td class='kast'><p>Nimi: </p></td>
  56.    <td class='kast'><input type='text' name='nimi' class='input' /></td>
  57.   </tr>
  58.   <tr>
  59.    <td class='kast'><p>Parool: </p></td>
  60.    <td class='kast'><input type='password' name='parool' class='input' /></td>
  61.   </tr>
  62.    <td colspan='2' align='center' class='kast'>
  63.    <input type='submit' name='submit' value='Sisene' class='input' /></td>
  64.   </tr>
  65. </table>
  66. </form>
  67. <?php
  68. }
  69. ?>

Suured tänud muidugi aitajatele eelmiste vigade suhtes beer_yum.gif thumbs_up.gif
See asi hakkab juba selgemaks saama
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
sosssepp
HV veteran
sosssepp

liitunud: 12.05.2003




sõnum 16.04.2009 09:09:48 vasta tsitaadiga

redenergy kirjutas:
nii tuleb kolmas edit icon_razz.gif
Aeg on öösse jõudnud aga sain löpuks valmis selle mida tahtsin.
Enam erroreid ei loobi ja süsteem töötab.
Veaks oli arvatavasti see, et sessiooni ei tohtinud teha olemasoleva nimega.
Panen üles siis töötava koodi, et teistele näha oleks kuidas õige oleks kui peaks sama probleem olema.
Tekstiosa on testimiseks.
php:
  1. <?php
  2. include 'sql.php';
  3.  
  4. $tulemus=true;
  5. $msg='';
  6. if(isset($_POST['submit'])) {
  7.  
  8. if(isset($_POST['nimi']) AND strlen($_POST['nimi']) < 2){
  9.     $msg.="<p2><B>Nimi</B> sisestamata.<BR></p2>";
  10.     $tulemus=false;
  11. }
  12. if(isset($_POST['parool']) AND strlen($_POST['parool'])  < 4){
  13.     $msg.="<p2><B>Parool</B> sisestamata.<BR></p2>";
  14.     $tulemus=false;
  15. }
  16. $nimi=$_POST['nimi'];
  17. $parool=md5($_POST['parool'])
  18. $nimi = stripslashes($nimi);
  19. $parool = stripslashes($parool);
  20. $nimi = mysql_real_escape_string($nimi);
  21. $parool = mysql_real_escape_string($parool);
  22. $sql = ("SELECT * FROM kasutajad WHERE nimi='$nimi' AND parool='$parool'");
  23. $result = mysql_query($sql);
  24. if(mysql_num_rows($result) == 0){
  25. $msg.="<p2><B>Nimi ja parool</B> ei klapi.<BR></p2>";
  26. $tulemus=false;
  27. }
  28. if($tulemus){
  29. $query = ("SELECT * FROM kasutajad WHERE nimi='$_POST[nimi]'");
  30. $tulem = mysql_query($query);
  31. $row = mysql_fetch_array($tulem);       
  32.  
  33. $_SESSION['sees']['id'] = $row['id'];
  34. $_SESSION['sees']['nimi'] = $_POST['nimi'];
  35. echo "<p3>Olete edukalt sisse logitud</br></p3>";
  36. echo "Tere : ".$_SESSION["sees"]['nimi'];
  37. echo "</br>See koht siin on ainult kasutajatele";
  38. }
  39. else {
  40. echo $msg;
  41. }
  42. }
  43. ?>
  44. <?php
  45. if(isset($_SESSION['sees']['id'])) {
  46. echo "Hei, ".$_SESSION['sees']['nimi'];
  47. } else {
  48. ?>
  49. <form method='post' action=''>
  50. <table align='center'>
  51.   <tr>
  52.    <td class='pais' colspan='2' align='center'><p>Logi sisse</p></td>
  53.   </tr>
  54.   <tr>
  55.    <td class='kast'><p>Nimi: </p></td>
  56.    <td class='kast'><input type='text' name='nimi' class='input' /></td>
  57.   </tr>
  58.   <tr>
  59.    <td class='kast'><p>Parool: </p></td>
  60.    <td class='kast'><input type='password' name='parool' class='input' /></td>
  61.   </tr>
  62.    <td colspan='2' align='center' class='kast'>
  63.    <input type='submit' name='submit' value='Sisene' class='input' /></td>
  64.   </tr>
  65. </table>
  66. </form>
  67. <?php
  68. }
  69. ?>

Suured tänud muidugi aitajatele eelmiste vigade suhtes beer_yum.gif thumbs_up.gif
See asi hakkab juba selgemaks saama

Teises baasipäringus paned otse POSTiga saadud muutujad päringusse?
Üldse miks pärid sa baasist sama asja kaks korda?
Päriks ühe korra ning ainult seda, mida sul vaja.
Tegin omapoolse kiire paranduse, tulemus oleks selline:
php:
  1. <?php
  2. include 'sql.php';
  3.  
  4. $tulemus=true;
  5. $msg='';
  6. if(isset($_POST['submit'])){
  7.         if(isset($_POST['nimi']) AND strlen($_POST['nimi']) < 2){
  8.                 $msg.="<p2><B>Nimi</B> sisestamata.<BR></p2>";
  9.                 $tulemus=false;
  10.         }
  11.         if(isset($_POST['parool']) AND strlen($_POST['parool'])  < 4){
  12.                 $msg.="<p2><B>Parool</B> sisestamata.<BR></p2>";
  13.                 $tulemus=false;
  14.         }
  15.         if($tulemus){
  16.                 $nimi=$_POST['nimi'];
  17.                 $parool=md5($_POST['parool'])
  18.                 $nimi = stripslashes($nimi);
  19.                 $parool = stripslashes($parool);
  20.                 $nimi = mysql_real_escape_string($nimi);
  21.                 $parool = mysql_real_escape_string($parool);
  22.                 $sql = ("SELECT id FROM kasutajad WHERE nimi='$nimi' AND parool='$parool'");
  23.                 $result = mysql_query($sql);
  24.                 if(mysql_num_rows($result) == 0){
  25.                         $msg.="<p2><B>Nimi ja parool</B> ei klapi.<BR></p2>";
  26.                         $tulemus=false;
  27.                 }else{
  28.                         $row = mysql_fetch_array($result);     
  29.                         $_SESSION['sees']['id'] = $row['id'];
  30.                         $_SESSION['sees']['nimi'] = $_POST['nimi'];
  31.                         echo "<p3>Olete edukalt sisse logitud</br></p3>";
  32.                         echo "Tere : ".$_SESSION["sees"]['nimi'];
  33.                         echo "</br>See koht siin on ainult kasutajatele";
  34.                 }
  35.         }else{
  36.                 echo $msg;
  37.         }
  38. }
  39. ?>
  40. <?php
  41. if(isset($_SESSION['sees']['id'])) {
  42. echo "Hei, ".$_SESSION['sees']['nimi'];
  43. } else {
  44. ?>
  45. <form method='post' action=''>
  46. <table align='center'>
  47.   <tr>
  48.    <td class='pais' colspan='2' align='center'><p>Logi sisse</p></td>
  49.   </tr>
  50.   <tr>
  51.    <td class='kast'><p>Nimi: </p></td>
  52.    <td class='kast'><input type='text' name='nimi' class='input' /></td>
  53.   </tr>
  54.   <tr>
  55.    <td class='kast'><p>Parool: </p></td>
  56.    <td class='kast'><input type='password' name='parool' class='input' /></td>
  57.   </tr>
  58.    <td colspan='2' align='center' class='kast'>
  59.    <input type='submit' name='submit' value='Sisene' class='input' /></td>
  60.   </tr>
  61. </table>
  62. </form>
  63. <?php
  64. }
  65. ?>
Kommentaarid: 87 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 75
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  Log in kasutaja kontroll mine lehele 1, 2  järgmine
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.