Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1

    problema funzione, errore Notice: Undefined index: page in C:\

    Buongiorno, stò realizzando un sito dinamico il php, con il seguente codice:

    controllo.php:
    <?php
    require 'function.php';
    $pagine = array('home','dovesiamo','contatti','camere');

    stampa($pagine);
    ?>


    function.php:
    <?php
    function stampa($pagine)
    { if (isset($_GET['page'])) {
    if (in_array($_GET['page'], $pagine)) {
    /* @var $page <type> */
    require "/{$page}.php";
    }
    else {
    echo 'Pagina non valida.';
    }
    }
    else {
    require 'home.php';
    }
    }
    $page = $_GET['page'];

    In qualunque posto metto $page = $_GET['page'] mi segna errore.
    Il meccanismo funziona, cioè stampa le pagine quando richieste, ma nella schermata iniziale, quando faccio partire il sito mi scrive anche Notice: Undefined index: page in ...directory.
    Di seguito se calco i pulsanti per richiamare le altre pagine(compresa la home), la scritta non compare.
    Come posso fare?
    Grazie,Stefania
    Destinato alla gioia, l'uomo si nutre di noia

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    controllo.php
    Codice PHP:
    <?php
    require 'function.php';
    $pagine = array('home','dovesiamo','contatti','camere');
    if(!isset(
    $_GET['page']))
        
    $_GET['page']='home';
    stampa($pagine);
    ?>
    function.php
    Codice PHP:
    <?php
    function stampa($pagine){ 
        if (isset(
    $_GET['page'])){ 
            if (
    in_array($_GET['page'], $pagine))
                require 
    "/{$page}.php";
            else
                echo 
    'Pagina non valida.';
        }
    }

    $page $_GET['page'];
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  3. #3
    no , così non stampa neanche le pagine a video e da comunque errore
    Destinato alla gioia, l'uomo si nutre di noia

  4. #4
    Nel php.ini correggi la riga riguardante gli errori in
    codice:
    error_reporting = "E_ALL & ~E_NOTICE &  ~E_DEPRECATED"
    Tradotto: visualizza tutti gli errori (E_ALL) tranne i notice e i deprecated
    Eventualmente puoi aggiungere anche & ~E_COMPILE_WARNING


  5. #5
    a dire il vero non riesco a trovare il file php.ini uso netbeans e xampp ma non lo trovo! cioè...non c'è proprio
    Destinato alla gioia, l'uomo si nutre di noia

  6. #6
    Per trovare il php.ini fai così..crea una pagina
    Codice PHP:
    <?php
    echo phpinfo();
    ?>
    e cerchi nel risultato..


  7. #7

    Re: problema funzione, errore Notice: Undefined index: page in C:\

    Originariamente inviato da unkus_nob
    Buongiorno, stò realizzando un sito dinamico il php, con il seguente codice:

    controllo.php:
    <?php
    require 'function.php';
    $pagine = array('home','dovesiamo','contatti','camere');

    stampa($pagine);
    ?>


    function.php:
    <?php
    function stampa($pagine)
    { if (isset($_GET['page'])) {
    if (in_array($_GET['page'], $pagine)) {
    /* @var $page <type> */
    require "/{$page}.php";
    }
    else {
    echo 'Pagina non valida.';
    }
    }
    else {
    require 'home.php';
    }
    }
    $page = $_GET['page'];

    In qualunque posto metto $page = $_GET['page'] mi segna errore.
    Il meccanismo funziona, cioè stampa le pagine quando richieste, ma nella schermata iniziale, quando faccio partire il sito mi scrive anche Notice: Undefined index: page in ...directory.
    Di seguito se calco i pulsanti per richiamare le altre pagine(compresa la home), la scritta non compare.
    Come posso fare?
    Grazie,Stefania
    Il notice compare quando $_GET['page'] non e' definita. Visto che nella prima parte del codice fai il controllo con isset(), perche' non farlo anche dopo, o - meglio ancora - settare $page = $_GET['page'] nella prima parte dell'if?

    @Dascos: non e' nascondendoli che si risolvono gli errori.

  8. #8
    Ma il notice non è un errore, non blocca il flusso del codice, così come i deprecated...e ti dirò di più...
    Su un'installazione nuova nuova di Joomla con virtuemart (mica uno script fatto da zero), abilitando i deprecated...

    codice:
    2011-03-26 19:17:00: (mod_fastcgi.c.2711) FastCGI-stderr: PHP Deprecated:  Assigning the return value of new by reference is deprecated in /home/applicazioniWeb/apache/vhosts/ecommerce.lamu.org/modules/mod_virtuemart_latestprod/mod_virtuemart_latestprod.php on line 42
    Vedi un po' tu...
    Ripeto quindi. Notice e deprecated sono tranquillamente escludibili, sebbene sia meglio per chi inizia a programmare in Php per capire alcuni concetti, ma sicuramente non è "nascondere errori" se anche prodotti come Joomla non sono esenti da notice e altri errori non gravi...

  9. #9
    Mah, quei notice vengono probabilmente dal fatto che quel codice era stato scritto per essere compatibile anche con PHP4 e la sintassi per quasi tutto il lato OO era diversa ed ora alcune cose sono deprecate. Potrebbero anche essere semplicemente inevitabili se si vuole mantenere la retrocompatibilita'.

    Comunque il codice puo' (ed anzi deve) GIRARE nella sua versione definitiva senza warning e notice, ma dovrebbe essere SVILUPPATO con la visualizzazione di ogni messaggio di errore o notifica, perche' e' compito del (bravo) sviluppatore scrivere codice piu' pulito e sicuro possibile. Un notice non e' un errore e' vero, pero' indica che c'e' qualcosa di anomalo che meriterebbe di essere approfondito e non ignorato. A me far finta che i notice non esistano non sembra un esempio di buona programmazione, soprattutto quando questi riguardano il mancato controllo sulla definizione delle variabili.

    Poi ognuno fa come crede, ma in una sede in cui si cercano di dare i migliori consigli "disattiva i notice e fregatene" non mi sembra la strada migliore per aiutare a migliorare.

  10. #10
    A questa stregua allora anche fargli continuare a usare una get non sanitizzata è da folli....

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.