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

Discussione: Problema sessione!

  1. #1

    Problema sessione!

    Dunque, io ho un form dove schiacciando invia si passa un valore (1,2,3 o 4). Il form ha come action la pagina stessa e deve fare in modo attraverso le sessioni che chi ha inviato non possa più inviare.
    Ho scritto questo codice:
    codice:
    <?php 
    	if(isset($_POST['ok'])){ \\CAMPO NASCOSTO
    		if ($_SESSION['voto'] == 'si' and $nvoto == "true") {
    		echo "<script>alert(\"Attenzione, hai già votato !\");history.back(-1);</script>";
    		exit;
    		}
    	session_start(voto);
    	$_SESSION['voto'] = 'si';
    Ma non funziona!!!!
    Idee?

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Secondo me fai prima a fare cosi':
    L'utente e' in sessione e la prima volta che vota, crei il suo dato disessione per il voto es.: $_SESSION['nome_utente_votatao']; Quindi la prima volta che preme invio apllichi il voto, crei il dato di sessione e a questo punto avendo ricaricato la pagina, non fai piu' apparire il tasto per l'invio. Conviene cmq salvare anche un dato in un campo tabella utente per ricordarti se ha gia votato(da usare per i successivi accessi alla pagina e creare gia in partenza la variabile di sessione).

  3. #3
    Ma io non ricarico la pagina, mando alla pagina dei risultati.
    Il problema è che non voglio usare database e che l'utente che vota non è registrato!

    Ma nel codice che ho scritto io che c'è di sbagliato?

    Io voglio evitare che una persona torni sulla pagina per ri votare...

  4. #4
    Cmq non funziona perchè session_start() va all'inizio e non dopo l'if.

    La soluzione che hai adottato mi sembra un po' inutile, comunque, perchè basta chiudere tutte le finestre del browser e ritornare sulla pagina per poter votare ancora e quante volte si vuole! Se vuoi essere veramente sicuro che un utente non voti più di una volta allora dovresti memorizzare nel db e fare molti più controlli contemporaneamente!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  5. #5
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Quoto Mircov, quindi penso che il mio esempio sia una delle possibili soluzioni. Ad ogni modo potresti migliorare con le parentesi che spesso sono causa di un errata letture del codice.

    if (($_SESSION['voto'] == 'si') and ($nvoto == "true"))

  6. #6
    Ok, vi ringrazio.
    Io ho bisogno di uno script senza database, per ragioni lunghe da spiegare. Poi non mi importa molto che sia sicurissimo, voglio solo che uno non si metta a schiacciare 100 volte il tasto vota.
    Ho provato a modificare il codice così:
    codice:
    <?php 
    	session_start();
    	if(isset($_POST['ok'])){
    		if ($voto == 'true' and $nvoto == "true") {
    		print "<script>alert(\"Non puoi votare più di una volta !\");history.back(-1);</script>";
    		exit;
    		}
    	session_register(voto);
    	$voto = "true";
    Ma continua a non funzionare...
    Avete idee?
    sesion_start l'ho messo prima dell'if...

  7. #7
    Stai facendo un gran casino! Per prima cosa utilizza i tag PHP e /PHP racchiusi tra [ e ] in modo da rendere il codice più chiaro.

    Ora passiamo al tuo codice:

    Codice PHP:
    session_start();
    if( isset( 
    $_POST['ok'] ) ) {

        if ( 
    $_SESSION['voto'] == 'true' and $_SESSION['nvoto'] == "true") {
            print 
    "<script>alert(\"Non puoi votare più di una volta !\");history.back(-1);</script>";
            exit;
            }
        
    $_SESSION['voto'] = "true";
            
    $_SESSION['nvoto'] = "true"
    Non usare session_register ma fai riferimento direttamente all'array $_SESSION

    Spero di aver capito cosa volessi fare!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  8. #8
    Ok, scusa.
    Il fatto è che $nvoto è una variabile del file di configurazione.
    Non funziona uguale:

    codice:
    session_start();
    	if(isset($_POST['ok'])){
    		if ($_SESSION['voto'] == "true" and $nvoto == "true") {
    		print "<script>alert(\"Non puoi votare più di una volta !\");history.back(-1);</script>";
    		exit;
    		}
    		if ($_POST['risp'] == "1") {
    			$perm = chmod("res/1.txt", 0777);
    			$apri = fopen("res/1.txt", "r");
    			$legcon = fread($apri, 110);
    			$chiudi1 = fclose($apri);
    			$apri2 = fopen("res/1.txt", "w");
    			$aggiungi = $legcon + 1;
    			$scrivi = fwrite($apri2,$aggiungi);
    			$chiudi = fclose($apri2);
    			$_SESSION['voto'] = "true";

  9. #9
    Ma che vuol dire non funziona uguale? Perchè dici che non funziona? Ti dà errori, non si comporta come vuoi, che fa di preciso che non va bene?

    E poi scusa per cosa?
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  10. #10
    Scusa per il codice, ma sai, ho iniziato da poco a scrivere in php.
    Significa che ingora le sessioni.
    Non mi da nessun messaggio di errrore, ma aggiunge il voto nel file di testo.

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.