Autorius Tema: Auto-prijungimo sistema ( su cookies )  (Skaityta 939 kartus)

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Auto-prijungimo sistema ( su cookies )
« Įrašytas: 2012-10-29 20:25:39 pm »
http://www.bitrepository.com/php-autologin.html

Okey, čia radau tą sistemą, bet ji jau parašyta yra ir skiriasi nuo mano login sistemos, tad nelabai besigaudau. Gal galima kaip parasčiau tai padaryti?

Pvz.:
1. Patikrinu ar uždėjo varnelę ant prijungimo automatinio
2. Jei taip tai toj pačioj vietoj kur sesijos kintamajam priskiriu vartotjo vardą, ten ir į cookies kažką įdedu.

Taip atrodo irgi turėtų veikti, bet nežinau kaip įgyvendinti cookies įrašymą pas vartotoją kompiuteryje

Neprisijungęs bendzaminas

  • Naujokas
  • *
  • Įrašai: 185
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #1 Įrašytas: 2012-10-30 09:11:04 am »
Kokiu būdu identifikuoja vartotoją tavo login'e?

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #2 Įrašytas: 2012-10-30 09:41:21 am »
Šitaip atrodo prisijungimo kodo vieta:


if (( isset($_POST['vardas']) AND isset ($_POST['slapikas'] )) AND ( !isset($_SESSION['prisijunges'])) ) {
$vardas=mysql_real_escape_string($_POST['vardas']);
$slapikas=md5($_POST['slapikas']);

$uzklausa=mysql_query("SELECT * from zaidejai WHERE vardas='$vardas' AND password='$slapikas' ");
// tikrinam ar teisingi duomenys
if (mysql_num_rows($uzklausa) == 1 ) {
// turim vartotoja
$_SESSION['prisijunges']=$_POST['vardas'];
} else {
echo " Tokio vartotojo nera ";


Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #3 Įrašytas: 2012-10-30 13:28:54 pm »
tai tu pridek prisijungima per hash'a ir ta hash'a saugok cookie. idek i duombazes users lentele hash ir ji sugeneruok visiskai random, tada padaryk taip, kad jei hash'as yra cookie tai pajungi pagal ji ir tiek
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Manualai.lt Forumas

Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #3 Įrašytas: 2012-10-30 13:28:54 pm »

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #4 Įrašytas: 2012-11-04 00:40:13 am »
Hmm, nelabai supratau.

<?php 
$uzklausa
=mysql_query("SELECT * from zaidejai WHERE vardas='$vardas' AND password='$slapikas' ");
// tikrinam ar teisingi duomenys
if (mysql_num_rows($uzklausa) == ) {
// turim vartotoja
Tai kai šitaip pirmą karta pasijungia žmogus, turiu sugeneruoti hashą, bet kaip jį generuoti, iš ko jis turi susidėti, kad atspindėtų tik to žmogaus iš to kompiuterio prisijungimą?

Cookies veikimo principą žinau, bet praktiškai vartojęs nesu ir visiškai mintys nesisuka kaip tai įgivendinti.

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #5 Įrašytas: 2012-11-04 13:16:45 pm »
hash'as butu tiesiog atsitiktiniai simboliai kuri paskaicius negaletum pasakyti nieko apie joki vartotoja ir isvis kas tai per hash'as. Ta hasha idetum i duombaze salia kitu userio lauku ir jei cookie turi savyje hash tai vietoj tikrindamas ar teisingas id/psw tiesiog tikrini ar teisingas hash'as. unikalu hash gali susigeneruoti pvz taip:

<?php
$hash 
uniqid(''true);
?>


http://php.net/manual/en/function.uniqid.php
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #6 Įrašytas: 2012-11-05 15:28:01 pm »
Tai bus taip:

<?php
$hash 
uniqid(''true);
setcookie("Prisijungimas"$hash);

Šitą įkeliu kai prisijungia su duomenimis į duombazę. O kitą kart kai jis prisijungia kaip patikrinti ar cookie setintas?

If ( $_COOKIE['Prisijungimas'] == $row['hashas_is_db'] ) {
echo "Tinka hashas, prijungiu ";
}

Taip supratau? Viskas tvarkoj su saugumu ir t.t. ?

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #7 Įrašytas: 2012-11-05 17:48:00 pm »
jo, taip supratai. Aisku turetum uzdeti ispejima, kad nenaudoti sitos funkcijos su public pc, kad neliktu prisijunges, o kitas zmogus ateina ir veikia su jo acc ka nori :) bet sitas ispejimas buna visad, jei jau nori issaugoti ilgam laikui sesija kokiu nors budu, visad saugumo spraga atsiranda, kad per ta laika tu nueisi nuo pc ir ateis kazkas kitas.
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs bendzaminas

  • Naujokas
  • *
  • Įrašai: 185
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #8 Įrašytas: 2012-11-05 18:57:29 pm »
Tik geriau ne if'as, o tiesiog užklausą mysql daryt.

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #9 Įrašytas: 2012-11-05 19:06:49 pm »
Tik geriau ne if'as, o tiesiog užklausą mysql daryt.

jo, is tikro tiesiog i sql tikrinima darai

SELECT * FROM users WHERE hash='h24ub3nk'

ir jei randa toki useri, tai ji prilogini.
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #10 Įrašytas: 2012-11-05 20:27:20 pm »
Kodėl ne tik ne ifais?

Betkuriuo atveju kitaip nesugalvoju:

<?php
$tra
=mysql_query(" SELECT * FROM users WHERE hash='h24ub3nk' ");
if ( 
mysql_num_rows($tra) == ) {
$tra=mysql_query(" SELECT * FROM users WHERE hash='h24ub3nk' ");
$info=mysql_fetch_array($tra);
$_SESSION['useris']=$info['vardas'];
} else {
prijungiam su paprasta forma.

Taip blogai?

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #11 Įrašytas: 2012-11-05 22:40:42 pm »
gerai, tik istrink ta antra uzklausa, kam tu to pacio i sql uzklausi? Jau turi gi rezultata
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #12 Įrašytas: 2012-11-07 17:22:52 pm »
Apsižiūrėjęs ją ikišau  :o

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #13 Įrašytas: 2012-11-07 23:18:43 pm »
Neveikia man ji, o klaidos niekaip nerandu :/
<?php
if ( isset($_COOKIE['prisijungimas']) ) {
$kukis=$_COOKIE["prisijungimas"];
$tra=mysql_query(" SELECT * FROM zaidejai WHERE hashas='".$kukis."' ");
if ( 
mysql_num_rows($tra) == ) {
// turim vartotoja 
$info=mysql_fetch_array($tra);
$_SESSION['prisijunges']=$info['username'];

 }
}
// tai iki cia prijungia jeigu yra cookie, jeigu nera tai jungia paprastai:



if (( isset($_POST['vardas']) AND isset ($_POST['slapikas'] )) AND ( !isset($_SESSION['prisijunges'])) ) {
$vardas=mysql_real_escape_string($_POST['vardas']);
$slapikas=md5($_POST['slapikas']);

$uzklausa=mysql_query("SELECT * from zaidejai WHERE username='$vardas' AND password='$slapikas' ");
// tikrinam ar teisingi duomenys
if (mysql_num_rows($uzklausa) == ) {
// turim vartotoja
$_SESSION['prisijunges']=$_POST['vardas'];

if ( isset($_POST['likti'] ) ) {  // cia checkboxas  ( <input type='checkbox' name='likti' value='1'> )
$hash uniqid(''true);
setcookie("Prisijungimas"$hash); 
mysql_query("UPDATE zaidejai set hashas='$hash' WHERE username='$vardas'") or die("Klaida x1");
}



} else {
echo 
" Tokio vartotojo nėra arba neteisingi prisijungimo duomenys. ";
}


Nežinau kaip rasti klaidą. Yra koks būdas patikrinti, ar yra cookie setintas pas mane ar kažką tokio?

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #14 Įrašytas: 2012-11-08 11:04:29 am »
tavo tas ifas kazkoks keistas..

if (( isset($_POST['vardas']) AND isset ($_POST['slapikas'] )) AND ( !isset($_SESSION['prisijunges'])) ) {

kokia klaida meta? cookiams editinti bent jau as naudoju sita:

https://chrome.google.com/webstore/detail/edit-this-cookie/fngmhnnpilhplaeedifhccceomclgfbg

chrome store'e yra pilna nemokamu irankiu cookiams valdyti.

beja, pabandyk savo cookiui suteikti tokia reiksme:

$_COOKIE['prisijungimas'] = "aa'; DROP TABLE zaidejai; SELECT * FROM zaidejai WHERE '1'='1";

ir pasiziurek savo duombaze ^^

p.s. pries tai siulau pasidaryti jos backupa.

p.p.s. tokia cookio reiksme lengvai gali padaryti bet kuris tavo psl vartotojas.

http://en.wikipedia.org/wiki/SQL_injection
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #15 Įrašytas: 2012-11-08 15:29:13 pm »
Va va, man irgi buvo šovusi mintis, kad su tuo cookie galima laisvai manipuliuoti, bet jūs rašėt kad saugus tas dalykas :D O klaidos tai jokios man nemeta, prijungia mane prie tinklapio su ta forma normaliai, hashą į DB irgi įmeta tvarkingai, bet atsijungus neprijungia automatiškai.

Neprisijungęs bendzaminas

  • Naujokas
  • *
  • Įrašai: 185
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #16 Įrašytas: 2012-11-08 19:46:31 pm »
Sausainėlius reiktų pravalyti kaip ir paprastą input'ą :)

Neprisijungęs Tautvydas

  • Dalyvis
  • **
  • Įrašai: 427
  • Karma: +11/-0
    • Žiūrėti profilį
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #17 Įrašytas: 2012-11-08 23:19:16 pm »
Okey supratau veikima, escapinsiu ir sausainiukus, bet tai kodel sitas nesuveikia man:
<?php
if ( isset($_COOKIE['prisijungimas']) ) {
$kukis=mysql_real_escape_sting($_COOKIE["prisijungimas"]);
$tra=mysql_query(" SELECT * FROM zaidejai WHERE hashas='".$kukis."' ");
if ( 
mysql_num_rows($tra) == ) {
// turim vartotoja 
$info=mysql_fetch_array($tra);
$_SESSION['prisijunges']=$info['username'];
 }
}

Jeigu tas cookie mano su:
setcookie("Prisijungimas", $hash);
užsistatė, tai tikrai turi veikti. Duombazėj tai yra ta reikšmė, bet manęs nejungia nors tu ką..

Neprisijungęs Lukas Liesis

  • Administratorius
  • Herojus
  • ******
  • Įrašai: 7385
  • Karma: +226/-15
    • Žiūrėti profilį
    • mano CV
Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #18 Įrašytas: 2012-11-09 11:30:28 am »
o tai kas negerai po situ eiluciu? pabandyk var_dump($_SESSION); po situ eiluciu.
Jūsų draugas, kolega ir puslapio administratorius,

Lukas.

Manualai.lt Facebooke
serveriai.lt 50% nuolaida!
Free Hosting
Free Templates

Manualai.lt Forumas

Ats: Auto-prijungimo sistema ( su cookies )
« Atsakymas #18 Įrašytas: 2012-11-09 11:30:28 am »