Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777

    [PHP]cookie con strano comportamento

    ciao a tutti
    ho un cookie con il quale memorizzo nome e mail dell'utente che commenta un mio articolo
    questo fa si che quando l'utente andrà a commentare lo stesso articolo o un altro del mio blog avrà gia belli compilati questi due campi
    gli articoli si trovano nel mio db mysql...ogni record corrisponde ad un articolo e sono contrassegnati da un campo id.

    vengono richiamati nella stessa pagina attraverso $_GET

    succede una cosa strana...se io vado a commentare l'articolo numero 1 il cookie non si crea e quindi i dati non rimangono memorizzati..quando vado a commentare gli altri il cookie si crea e in tutti gli articoli presenti che nel numero uno i dati compaiano...
    Codice PHP:
    //nel form per commentare
    if(isset($_COOKIE['art_utente'])){
    list(
    $nome,$mail)=explode("|",base64_decode($_COOKIE["art_utente"])); 
    $form_nome"

    Nome:
    <input name=\"nome\" value=\""
    .$nome."\" type=\"text\"></p>";
    $form_mail"

    Email:
    <input name=\"mail\" value=\""
    .$mail."\" type=\"text\"></p>";
    }
    else{
    $form_nome"

    Nome:
    <input name=\"nome\" type=\"text\"></p>"
    ;
    $form_mail"

    Email:
    <input name=\"mail\" type=\"text\"></p>"
    ;
    }
    //tante righe sotto....
    // la sua creazione
    $tmpinfobase64_encode($nome."|".$mail);
                    if(!isset(
    $_COOKIE['art_utente']) OR $_COOKIE['art_utente'] != $tmpinfo ){
                    
    setcookie("art_utente","$tmpinfo",time()+360000) ;
                    } 
    devo avvertire di una cosa...
    avevo creato un guestbook con lo stesso codice che gestisce i commenti un pochettino modificato però salvato su una pagina differente e ho pensato dipendesse dal fatto che il cookie era stato creato con lo stesso nome...

  2. #2
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    In realtà il comportamento è normale... il cookie viene letto tramite request header, e quindi non lo puoi leggere fino a quando non interviene una nuova richiesta.
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    io faccio il commento dell'articolo 2 o il 3 o il 4 e cosi via
    aggiorno la pagina per vederne gli effetti e si vede l'effetto del cookie
    nell'articolo 1 ciò non succede

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    è solo nel primo articolo che non funziona l'effetto negli altri si
    potrei anche sorvolare ma vedendo questa cosa strana vorrei capirne qualcosa

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    comunque come sintassi sta bene?

  6. #6
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Ahhhh... non avevo capito... e com'è possibile?

    Fai qualche controllo sull'id? Magari il problema sta li perchè mi pare di capire che l'unica cosa che cambi sia appunto l'id dell'articolo

    Codice PHP:
    setcookie("art_utente","$tmpinfo",time()+360000) ; 
    Togli le virgolette a $tmpinfo
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    Codice PHP:
    session_start();
    // paginazione get articoli -----------------------------------------------------------
    $pag intval($_GET['art']);

    // fine paginazione get articoli --------------------------------------------------

    //---------------------- info articoli -------------------------------------------------------------------------------
    // tipo sezione ----------------------
    $sez "art";

    // fine tipo sezione -----------------

    // richiesta uri--------------------------------------------------------
    $path"http://";
    $path .= $_SERVER['HTTP_HOST'];
    $uri $_SERVER['REQUEST_URI'];
    $path .= $uri;
    // fine richiesta uri-----------------------------------------------------

    // ------------------------ sessioni ------------------------------------------
    $_SESSION['pag'] = $pag;
    $_SESSION['sezione']= $sez;
    $_SESSION['path']= $uri;

    // -------------------- fine info articoli-------------------------------------------------------------------------

    // contatori -------------------------------------------------------------------------------------------------------
    // numero articoli
    $conta_articoli mysql_query"SELECT count(*) as tot FROM articoli WHERE sezione='0'" ) or die( mysql_error() );
    $r_articoli mysql_fetch_array$conta_articoli );
    $n_articoli $r_articoli['tot'];
                
    // nuumero commenti
    $conta_commenti mysql_query"SELECT count(*) as tot FROM commenti WHERE page =$pag) or die( mysql_error() );
    $r_commenti mysql_fetch_array$conta_commenti );
    $n_commenti$r_commenti['tot'];

    $show_commenti= ($n_commenti == 1) ? "commento" "commenti";


    // fine contatori ---------------------------------------------------------------------------------------------------



    // selezione articoli -------------------------------------------------------


    $query"SELECT *, DATE_FORMAT(datetime,'[b](%d.%m.%Y[/b] - [b]%H:%i:%s)[/b]') as datatime FROM articoli WHERE sezione='0' AND id=$pag LIMIT 1";
    $risultato mysql_query($query);
     
    // fine selezione articoli --------------------------------------------------
            
                    
    $flag_colore=0;

                    while(
    $articles=mysql_fetch_array($risultato)){
                        
    $titolo=$articles['titolo'];
                        
    $content=$articles['content'];
                        
    $url=$articles['url'];
                        
    $materia=$articles['materia'];
                        
    $id=$articles['id'];
                        
    $si=$articles['si'];
                        
    $no=$articles['no'];
                        
    $datetime$articles['datatime'];
                        
    $preview$articles['preview'];
                        
    $tag$articles['tag'];
                        
    $commentimysql_query("UPDATE articoli SET commenti=$n_commenti WHERE id = '$pag'");
                        
                        if(isset(
    $_GET['segnala']) AND $_GET['segnala'] == 1){
                        echo 
    "
    "
    ;
                        include(
    "segnala_art.php");
                        }
                        else{
                        include(
    "page.php");
                        echo 
    $pagea;
                        echo 
    "<h1>".ucfirst($titolo)."</h1><div class=\"corp\"><div class=\"cont2\">$preview</div></div>
    "
    ;
            
                        
    // colore alternato
                        
    if($flag_colore==0){
                            
    $flag ="<div class=\"cont1\">";
                            
    $flag_colore=1;
                        }
                        else{
                            
    $flag"<div  class=\"cont2\">";
                            
    $flag_colore=0;
                        }
                        
                        
    // pagine sviluppate
                        
    echo "<a name=\"articolo\"></a>";
                        echo 
    "<div class=\"corp\">";
                        echo 
    "<div class=\"cont1 tornasu\">";
                        echo 
    "<a href=\"../all.php\">Tutti gli articoli</a>";
                        echo 
    "</div>";
                        echo 
    "<div class=\"cont2\">";
                        echo 
    "<div class=\"inter\">";
                        echo 
    "<div class=\"left\">";
                            include (
    "vota.php");
                        echo 
    "</div>";
                        echo 
    "<div class=\"right\">
                        Pubblicato in <a href=\"http://www.atuttascienza.altervista.org/ricerca.php?search=
    $materia\">".ucfirst($materia)."</a> $datetime
     
                        <a href=\"
    $path&segnala=1\">Segnala ad un amico</a> | 
                            <a href=\"#commenti\">Commenta</a> [b](
    $n_commenti $show_commenti)[/b]

                            <a href=\"javascript:window.print()\">Versione stampa</a> | 
                            <a href=\"javascript:bookmarksite('Atuttascienza..nel mare del sapere','http://
    $path')\">Aggiungi a preferiti</a></div>";                      
                        echo 
    "<div class=\"clear\"></div>


    "
    ;
                    
                        
    $testo$content;
                        include (
    "replace.php");
                        echo 
    "</div></div>";
                        echo 
    "<div class=\"cont1 tornasu\">";
                        echo 
    "<a href=\"../all.php\">Tutti gl articoli</a> | <a href=\"#articolo\">Torna su</a>";
                        echo 
    "</div>";
                        echo 
    "</div>";
                
                        echo 
    "
    "
    ;

                        
                        include(
    "commenti.php");
                        echo 
    $pagea;
                        include(
    "correlati.php");
                        echo 
    "
    "
    ;
                        
                        }
                                
                        
        } 

    questa è la pagina che raccoglie gli articoli...che crea il get...come si può notare c'è commenti.php inserito con include dove poi si trova anche il setcookie...
    comunque il bello è che finchè non ho creato il guestbook sembrava funzionare tutto.
    la pagina del guestbook prende con include la pagina guest_comment.php che è quasi uguale a quella di commenti.php ma cambiano le variabili poichè vanno riferite al guestbook...

    ho notato che sempre nel articolo con id 1 il numero di commenti non si aggiorna più...
    il trucco che uso in commenti è che una volta mandato il commento aggiorno la pagina con header location in modo da aggiornare i commenti e il suo numero.quindi è come se la ricaricassi..

    [/PHP]

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    meno male che avevo scritto 4 articoli di prova...ho azzerato il contenuto della tabella del db e riscritto un articolo a casaccio e sembra rifunzionare

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.