Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: sessione sondaggio

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    250

    sessione sondaggio

    ciao ragazzi..
    qualcuno sa' dirmi dove sbaglio??

    Questa è la pagina del sondaggio
    Codice PHP:
    <?php if(!in_array("$d[id]",$_SESSION)){ ?>
        <form action="include/process.php" method="post">
        <input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR'?>">
        <input type="hidden" name="sondaggio" value="<?php echo $d[id]; ?>">
        <?php    
            $sql
    ="SELECT * FROM $table2 WHERE id_sondaggio='$d[id]' ORDER BY id";
            
    $r=mysql_query($sql);
            while(
    $d=mysql_fetch_array($r)){
        
    ?>
            <div class="w470 f12 mb9"><input style="vertical-align: middle;" name="id_risposta" value="<?php echo $d[id?>" type="radio" align="bottom"><?php echo $d[risposta?></div>
        <?php ?>
        
        
        <input type="submit" name="submit" value="Vota"> <input type="submit" name="submit" value="Vedi i risultati">
        </form>
        <?php }else{ ?>
        
        Hai giˆ votato.
        <?php ?>
    e questa è la pagina dove effettuo l'inserimento dei dati nel database e la registrazione della sessione
    Codice PHP:
    <?
    session_start
    ();
    include (
    "config.php");

    $s="INSERT INTO $table3 (id_risposta, ip) VALUES ('$_POST[id_risposta]', '$_POST[ip]')";
    $r=mysql_query($s);

    $_SESSION[] = "$_POST[sondaggio]";

    header("Location:../scheda.phtml?id=$_POST[sondaggio]")
    ?>


    Praticamente.. non riesco a limitare ad 1 SOLO VOTO la votazione dei sondaggi da parte degli utenti.
    Altra cosa.. cè la possibilità di settare la durata di una sessione?

  2. #2
    io non uso mai le sessioni.. (deformazione professionale)


    se vuoi un consiglio su come risolvere con i cookie, fai settare un cookie a caso quando l'utente effettua il voto..

    la prox volta che andrà ad effettuare il voto controlli l'esistenza del cookie..

    ovviamanete questo metodo è facilmetne bypassabile cancellando il cookie, se hai esigenze più estreme dovresti far loggare ogni utente e salvare il voto in un db (o su testo ovviamente ) sul server (e non nella sessione che ovviametne si cancella alla chiusura del browser)

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    250
    ciao
    grazie della risposta..
    non uso i cookies perchè non ho molta esperienza in questo genere.
    Cmqe potrei provarci se mi aiuti.
    Io ho modificato lo script e testato.. ma non mi quadra... praticamente riesco a rivotare.
    Ho fatto così:


    Codice PHP:
    <?php if($_COOKIE[sondaggio] != $d[id]){ ?> // l'id è del sondaggio registrato nel cookie
    <form action="include/process.php" method="post">
    <input type="hidden" name="sondaggio" value="<?php echo $d[id]; ?>">    
    <input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR'?>">
        
        <?php    
            $sql
    ="SELECT * FROM $table2 WHERE id_sondaggio='$d[id]' ORDER BY id";
            
    $r=mysql_query($sql);
            while(
    $d=mysql_fetch_array($r)){
        
    ?>
            <div class="w470 f12 mb9"><input style="vertical-align: middle;" name="id_risposta" value="<?php echo $d[id?>" type="radio" align="bottom"><?php echo $d[risposta?></div>
        <?php ?>

    Questa la pagina di processo

    Codice PHP:
    session_start();
    include (
    "config.php");

    $s="INSERT INTO $table3 (id_risposta, ip) VALUES ('$_POST[id_risposta]', '$_POST[ip]')";
    $r=mysql_query($s);

    setcookie("sondaggio","$_POST[sondaggio]",time()+3600);

    header("Location:../scheda.phtml?id=$_POST[sondaggio]"

  4. #4
    nella pagina in cui inserisci il voto devi controllare se è presente il cookie fancedo


    Codice PHP:

    if (isset($_COOKIE['sondaggio1'])) {
     echo 
    'Scemo hai già votato!';
    } else {
     
    // Codice di inserimento del voto +
     // settaggio cookie


  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    250
    cavolo, ho provato in tutti i modi ma non mi va!
    non è che sia un problema di directory?!?.. non penso..
    ho la pagina sondaggio che richiama la pagina process.php dentro la cartella include

    cmqe questo è lo script:

    Codice PHP:
           <?php
    //mi collego al database e prendo i dati del sondaggio selezionato
    $sql="SELECT * FROM $table WHERE id='$_GET[id]'";
    $r=mysql_query($sql);
    $d=mysql_fetch_array($r);


        if(isset(
    $_COOKIE["sondaggio$d[id]"])) { 
        
    ?>
        
        <div class="w470 mb9 b f16 gray">Il risultato</div>
        <div class="w470 mb9 b f22"><?php echo $d[titolo]; ?></div>
        
        i risultati
        
        
        <?php }else{ ?>
        
        <div class="w470 mb9 b f16 gray">Vota</div>
        <div class="w470 mb9 b f22"><?php echo $d[titolo]; ?></div>
        <form action="include/process.php" method="post">
        <input type="hidden" name="ip" value="<?php echo $_SERVER['REMOTE_ADDR'?>">
        <input type="hidden" name="sondaggio" value="<?php echo $d[id]; ?>">
        <?php    
            $sql
    ="SELECT * FROM $table2 WHERE id_sondaggio='$d[id]' ORDER BY id";
            
    $r=mysql_query($sql);
            while(
    $d=mysql_fetch_array($r)){
        
    ?>
            <div class="w470 f12 mb9"><input style="vertical-align: middle;" name="id_risposta" value="<?php echo $d[id?>" type="radio" align="bottom"><?php echo $d[risposta?></div>
        <?php ?>
        
        <input type="submit" name="submit" value="Vota"> <input type="submit" name="submit" value="Vedi i risultati">
        </form>
        <?php ?>

    e questa la pagina proccess.php dentro la cartelle include

    Codice PHP:
    <?php
    session_start
    ();
    include (
    "config.php");

    $s="INSERT INTO $table3 (id_risposta, ip) VALUES ('$_POST[id_risposta]', '$_POST[ip]')";
    $r=mysql_query($s);

    setcookie("sondaggio$_POST[sondaggio]"$_POST[sondaggio], time()+86400);  

    header("Location:../scheda.phtml?id=$_POST[sondaggio]")
    ?>
    Perchè non mi va?!?!?

  6. #6
    ma che significa che non ti va? ti fa qualche errore mostra qualcosa?

    ed inoltre ti ho spiegato prima se tu fai direttamente:

    $s="INSERT INTO $table3 (id_risposta, ip) VALUES ('$_POST[id_risposta]', '$_POST[ip]')";
    $r=mysql_query($s);

    è ovvio che viene inserito ogni volta che viene richiesta la pagina...

    leggiti di nuovo il mio codice prima

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    250
    Non ci siamo capiti,
    allora nella pagina sondaggio ci sono 2 condizioni:

    1 condizione: se non è presente il cookie l'utente vede il sondaggio e può votare.
    2 condizione: se è presente il cookie mi fa vedere il sondaggio con i risultati (senza la possibilità di votare)


    La pagina process.php con l'insert viene utilizzata solo nella 1 condizione quindi l'utente effettua il voto, i dati vengono inseriti e successivamente viene registrato il cookie (vedi setcookie). Poi mi rimanda alla pagina del sondaggio.
    Chiaramente.. nella pagina sondaggio in questo giro subentra la 2 condizione (IN TEORIA) .. vede il cookie
    (if(isset($_COOKIE["sondaggio$_GET[id]"])) { ) e non permette all'utente di votare di nuovo (fa vedere solo i risultati).

    Allora con questi script io non ho nessun errore, però continuo a votare.. sembra che il cookie non viene letto o interpretato.

  8. #8
    prima di tutto ti conviene effettuare il controllo anche nella pagina process..
    poi nella pagina del sondaggio fai

    print_r($_COOKIE); e posta i results...

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    250
    eccolo

    Codice PHP:
    Array ( [__utmz] => 18919211.1210643631.479.181.utmccn=(referral)|utmcsr=adunatabassano.it|utmcct=/index.phtml|utmcmd=referral [__utma] => 18919211.219126426.1193424709.1211104117.1211186459.486 [__utmc] => 18919211 [PHPSESSID] => pprj717u1ul69e01jovj8dhbg1 

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2007
    Messaggi
    250
    Ho provato a cancellare tutti i cookie da firefox e ho provato a votare.
    ecco cosa mi è uscito:

    Array ( [PHPSESSID] => e010l8uc4pq9f577jbtng9cub0 [__utma] => 197881901.1810096312.1211242335.1211242335.1211242 335.1 [__utmb] => 197881901 [__utmc] => 197881901 [__utmz] => 197881901.1211242335.1.1.utmccn=(direct)|utmcsr=(d irect)|utmcmd=(none) )

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.