Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Errore "Undefined index:" con cookie, come risolvo??

    Ciao a tutti, sono alle prime armi con il PHP e sono alle prese con la lettura di un libro (Sviluppare siti web con PHP6, Apache, Mysql).

    Ho installato il tutto con EasyPHP (PHP 5.3.5, Apache 2.2.17, MySQL 5.1.54), visto che per quanto ne penso il PHP6 non è ancora pronto per sviluppare come si deve.

    Il problema sorge quando provo il programma di prova per imparare l'utilizzo dei cookies:

    La prima pagina PHP fa apparire su video un link che collega alla seconda pagina, e tramite cookie cliccando sul link dovrebbe inviare il dato (nome dell'utente direi) alla seconda pagina, che lo utilizza per stamparlo a video.

    L'errore che mi compare è il seguente:
    Notice: Undefined index: username in C:\Program Files (x86)\EasyPHP-5.3.5.0\www\moviesite.php on line 19

    Ed ecco uno stamp della pagina di errore:
    http://img593.imageshack.us/i/errorec.jpg/

    Ecco i 2 codici sorgenti (scusate se sono un po scritti in modo confuso ma non ho ancora scaricato un buon editor di testo):

    File 1 (movie1.php) file con il link:
    Codice PHP:
    <?php
     setcookie 
    ('username','Joe'time());
     
    session_start();
     
    $_SESSION['authuser']=1;
    ?>

    <html>
    <head>
     <title>Trova il mio film preferito!</title>
      
       <body>
    <?php
    $myfavmovie
    urlencode('la vita di brian');
    echo 
    "<a href=\"moviesite.php?favmovie=$myfavmovie\">";
    echo 
    "Clicca qui per vedere informazioni sul mio film preferito!";
    echo 
    "</a>";
    ?>

       <body>
    <head>
    <html>

    File 2 (moviesite.php) quello a cui manda il link e dove si presenta il messaggio d'errore:
    Codice PHP:
    <?php
    session_start
    ();

    //verifica se l'utente ha effettuato il log-in con una password valida
    if ($_SESSION['authuser'] != 1) {
      echo 
    "Ci dispiace ma non hai il permesso di visualizzare questa pagina";
      exit(); }
    ?>

    <html>
    <head>
     <title>My Movie Site - <?php echo $_GET['favmovie']; ?></title>
    <head>  
       <body>
    <?php

    echo "Benvenuto nel nostro sito";

    echo 
    $_COOKIE['username'];
    echo 
    "! 
    "
    ;


    //Esempio di recupero informazione tramite cookie

     
    echo "Il mio film preferito è ";
     echo 
    $_GET['favmovie'];
     echo 
    '
    '
    ;


    ?>

       <body>

    <html>
    Spero che qualcuno riesca ad aiutarmi a risolvere il problema perchè se no sono bloccato

    Grazie a tutti in anticipo

  2. #2
    quel'errore significa che stai utilizzando una variabile no settata (Undefined)

    quando devi utilizzare variabili la cui esistenza non è certa, come ad esempio i cookies devi fare dei controlli pleliminari prima di utilizzarla.
    In particolare
    - devi verificarne l'esistenza con la funzione isset()
    - inoltre è buona norma verificare che la variabile contenga un dato che ci si aspetta; ad esempio se ci aspettiamo che sia un numero è possibile verificarlo con is_numeric()

  3. #3
    Ma non è settata nella creazione del cookie?

    Come posso risolvere?

    Grazie

  4. #4
    Ribadendo il consiglio datoti prima nel caso specifico dipende dal fatto che il cookie non è settato correttamente; in particolare il terzo parametro è impostato non esattamente.

    Il terzo parametro ci indica la scadenza del cookie. Tu imposti la scadenza con time() (sperando che tu sappia cosa sia un timestamp) ma un secondo dopo esso risulta scaduto.

    Quindi nella pagina successiva $_COOKIE['username'] non esiste (per questo devi fare il controllo con isset come ti dicevo);

    SOLUZIONE: quando setti il cookie devi aggiungere al time un certo numero di secondi a seconda di quando lo vuoi far scadere:
    Codice PHP:
    $ore_giornata 24;
    $minuti_ore 60;
    $secondi_ora 60;
    $ventiquatro_ore $ore_giornata $minuti_ore $secondi_ora// cioè 3600
    setcookie ('username','Joe'time() + $ventiquatro_ore); 

  5. #5
    Prima era impostato un +60 dopo il time() ma anche così purtroppo non funzionava.

    Proverò a cercare una soluzione!

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.