Eroare creare cookie

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

Avatar utilizator
botavlad
Average Member
Mesaje: 101
Membru din: Vin Mai 13, 2011 8:21 pm
Contact:

Eroare creare cookie

Mesajde botavlad » Mar Iun 11, 2013 7:11 pm

Buna ziua de inceput as dori si eu un pic de ajutor .
Incerc sa fac un script de autentificare si nu vrea sa imi creeze cooki-ul habar nam de ce
aici este codul sursa

Cod: Selectaţi tot


$ora = time() +3600;
 setcookie("ID_my_site", $_POST['username'],$ora);
 setcookie("Key_my_site", $_POST['pass'], $ora);


Vreau sa specific ca , daca in loc de variabila $ora pun zero , imi creaza cooki-ul dar problema vine de stergerea cooki-ului .
Eu am incercat sa il sterg asa .

Cod: Selectaţi tot

$past = time() - 3600;

 

 setcookie(ID_my_site, gone, $past);

 setcookie(Key_my_site, gone, $past);

 header("Location: /index.php");


Astept sfaturile voastre !
Stima !



Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Eroare creare cookie

Mesajde Birkoff » Mar Iun 11, 2013 7:22 pm

conform documentatiei din manualul oficial http://www.php.net/manual/ro/function.setcookie.php
ca sa setezi un cookie nu trebuie sa ai nimic trimis la browser (deci inainte de orice echo sau cod html)
setezi cookie, afisezi pagina html abia atunci se va seta si cookie dupa trimiterea codului html la browser.
ulterior in pagina urmatoare poti verifica daca exista cookie facand ceva de genu

echo '<pre>'.var_export($_COOKIE, 1).'</pre>';

(nu poti prelua cookie imediat dupa ce l-ai creat, pentru ca pana nu il trimiti la browser el nu se creaza, si abia in pagina urmatoare poti vedea cookie-ul creat anterior si il poti sterge)

Pe de alta parte, e o mare eroare de securitate sa setezi user si parola in cookie (oricine le poate vedea si modifica si astfel sa aiba acces de admin de exemplu)
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
botavlad
Average Member
Mesaje: 101
Membru din: Vin Mai 13, 2011 8:21 pm
Contact:

Re: Eroare creare cookie

Mesajde botavlad » Mar Iun 11, 2013 7:39 pm

Birkoff scrie:conform documentatiei din manualul oficial http://www.php.net/manual/ro/function.setcookie.php
ca sa setezi un cookie nu trebuie sa ai nimic trimis la browser (deci inainte de orice echo sau cod html)
setezi cookie, afisezi pagina html abia atunci se va seta si cookie dupa trimiterea codului html la browser.
ulterior in pagina urmatoare poti verifica daca exista cookie facand ceva de genu

echo '<pre>'.var_export($_COOKIE, 1).'</pre>';

(nu poti prelua cookie imediat dupa ce l-ai creat, pentru ca pana nu il trimiti la browser el nu se creaza, si abia in pagina urmatoare poti vedea cookie-ul creat anterior si il poti sterge)

Pe de alta parte, e o mare eroare de securitate sa setezi user si parola in cookie (oricine le poate vedea si modifica si astfel sa aiba acces de admin de exemplu)



Multumesc pentru raspuns Birkoff .
Inainte ca sa setez cookie nu este trimis nimic la browser am verificat daca cookie este creat cu codul dat de tine si este creat, problema este ca mie nu vrea sa mi-l stearga oare imi este gresit mie codul ?? legat de securitate ai ff mare dreptate !
Multumesc anticipat!

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Eroare creare cookie

Mesajde Birkoff » Mar Iun 11, 2013 7:58 pm

ca sa stergi un cookie ai exemplu tot in manualul oficial, pur si simplu in cod setezi cu
setcookie('nume_cookie', NULL, -3600);
trimiti la browser si atunci browserul stie ca trebuie sa modifice valoarea si timpul la cookie-ul ala, vede ca e timp in trecut si ilsterge
ulterior userul da clik pe alt link pe o noua pagina si tu in noua pagina poti verifica daca mai exista cookie-ul respectiv

(e ca la creare, setezi -> trimiti -> se seteaza la user -> merge pe alta pagina -> verifici/stergi -> trimiti -> se seteaza la user -> merge pe alta pagina -> verifici (sa sters))
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
botavlad
Average Member
Mesaje: 101
Membru din: Vin Mai 13, 2011 8:21 pm
Contact:

Re: Eroare creare cookie

Mesajde botavlad » Mar Iun 11, 2013 8:19 pm

Birkoff scrie:ca sa stergi un cookie ai exemplu tot in manualul oficial, pur si simplu in cod setezi cu
setcookie('nume_cookie', NULL, -3600);
trimiti la browser si atunci browserul stie ca trebuie sa modifice valoarea si timpul la cookie-ul ala, vede ca e timp in trecut si ilsterge
ulterior userul da clik pe alt link pe o noua pagina si tu in noua pagina poti verifica daca mai exista cookie-ul respectiv

(e ca la creare, setezi -> trimiti -> se seteaza la user -> merge pe alta pagina -> verifici/stergi -> trimiti -> se seteaza la user -> merge pe alta pagina -> verifici (sa sters))

Nu merge uite o sa pun tot codul de unde creez cookie si codul de stergere .

index.php

Cod: Selectaţi tot

<?php
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');   

include 'conectare.php';
ini_set('desplay_error',1);
error_reporting(E_ALL && E_NOTICE);



 if(isset($_COOKIE["ID_my_site"]))//daca suntem deja logati se face o verificare a datelor din cookie
 {
 
    $username = $_COOKIE["ID_my_site"];
    $pass = $_COOKIE["Key_my_site"];
    $check = mysql_query("SELECT IdUser,username,password,Denumire FROM tblusers,tbltipuser WHERE username = '$username' and tblusers.Tip=tbltipuser.IdTip")or die(mysql_error());

    while($info = mysql_fetch_array( $check )) {

       if ($pass == $info['password']) {
         
         if('Administrator'==$info['Denumire']){ //daca ne logam ca admin
          header("location:/Administrator/Administrator.php");}
         
         else if('Profesor'==$info['Denumire']){   //daca ne logam ca simplu user   
         header("Location:/profesor/profesor.php");
          }else {   //daca ne logam ca simplu user   
         header("Location:/studenti/studenti.php");
         }
            }
       }

 }


 //daca au fost trimise datele de la formular

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

    if(!$_POST['username'] | !$_POST['pass']) //verificare campuri sa nu fie goale
       $msg= "You left some blank fields!";

    
 $verif = mysql_query("SELECT * FROM tblusers WHERE username = '".$_POST['username']."'");
 

 if  (mysql_num_rows($verif)  == 0)
$msg="The chosen username does not exist in our database! <a href=register.php><br>Click here to create a new acount!!</a>";

             

 while($info = mysql_fetch_array( $verif )){
   $_POST['pass'] = mysql_real_escape_string($_POST['pass']);
   
    $info['password'] = mysql_real_escape_string($info['password']);
    $_POST['pass'] = ($_POST['pass']);



    if ($_POST['pass'] != $info['password'])
       $msg="Wrong password!Try again!";

   else {

 // daca loginul e ok cream un cookie

 $ora = time() + 3600;

 setcookie("ID_my_site", $_POST['username'], $ora); //stocam userul in cookie
 setcookie("Key_my_site", $_POST['pass'], $ora);//stocam parola in cookie

$check = mysql_query("SELECT username,password,Denumire FROM tblusers,tbltipuser WHERE username = '".$_POST['username']."' and tblusers.Tip=tbltipuser.IdTip");

  $info = mysql_fetch_array( $check );
    
 
if('Administrator'==$info['Denumire'])
 header("Location:/Administrator/Administrator.php");
else if ('Profesor'==$info['Denumire'])
header("Location:/profesor/profesor.php");
else header("Location: /studenti/studenti.php");

 }
 }
 }


 ?>



Logout.php

Cod: Selectaţi tot

$past = time() -3600;

 //this makes the time in the past to destroy the cookie

 setcookie('ID_my_site', NULL, -3600);
 setcookie('Key_my_site',NULL, -3600);
 header("Location: /index.php");


Multumesc

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Eroare creare cookie

Mesajde Birkoff » Mar Iun 11, 2013 10:49 pm

Se vede ca nu stii nimic de securitate, codul tau e 0 pe parte de securitate (orice scriptkidie poate da site-ul jos/sterge bd sau lua drept de admin/profesor) asa cum ai scris tu acolo.
Revenind strict la problema din topic, ar trebui sa ai cookie-urile ok si sa se stearga ok.
Ai incercat dupa logout dupa ce te duce la index sa intrii pe alta pagina sa vezi daca pe alta pagina mai ai cookie ala?
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

quadmachine
Senior Member
Mesaje: 807
Membru din: Sâm Iul 10, 2010 4:58 pm
Localitate: Ploiesti
Contact:

Re: Eroare creare cookie

Mesajde quadmachine » Joi Iun 20, 2013 6:52 pm

Cod: Selectaţi tot

     //cookie setare
     setcookie('nume_prajiturica', 'valoare', time() + 60 * 60 * 24 * 30, '/', 'domeniultau.com', '', false);
     /*
       setcookie() //initializare functie cookie
                   - nume cookie
                   - valoare cookie
                   - timpul de viata al unei prajiturele (poti altera si cu ini)
                   - "/" inseamna ca va fi folosita pe tot domeniul aceasta prajiturica
                   - pe ce domeniu va fi folosit
                   - Nu cred ca folosesti HTTPS...so don't use it
                   - pe true este valabila doar pentru protocolul HTTP
     */
     
     //cookie remove
     setcookie('nume_prajiturica', 'valoare', time() - 60 * 60 * 24 * 30, '/', 'domeniultau.com', '', false);

Cod: Selectaţi tot

Nu confundati femeia de serviciu cu profesoara de Limba si Literatura Romana.

Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Re: Eroare creare cookie

Mesajde Birkoff » Joi Iun 20, 2013 8:00 pm

mi sa aprins acum beculetul si am vazut unde era eroarea ta in cod...
daca nu setezi la setcookie parametrul '/' cookie ala se va defini doar pentru calea curenta...
daca tu ai rewrite la url calea nu o sa mai corespunda si automat nici nu o sa mai gasesti cookie...
deci pe langa ce ai acolo mai pune si / respectiv asa

setcookie("ID_my_site", $_POST['username'], $ora, '/', 'eventual si domeniul'); //stocam userul in cookie

asa ar trebui sa nu mai ai probleme indiferent cum ai rewrite la fisiere
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 37 vizitatori