Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    122

    Variabili non definite - differenze PHP-4 con PHP-5

    Ciao,
    ho iniziato a sviluppare un sito su un PC in cui è installato PHP versione 4.
    Ora mi sono portato a casa i sorgenti ed ho installato sulla mia macchina PHP versione 5.

    Su un modulo PHP quando gira sul PC versione 4 è tutto OK, quando gira su PC con versione PHP 5 prendo una serie di warning del tipo

    "Notice: Undefined variable: txtPwd in D:\www\Europeo\BoxRegistra.php on line 49".

    So che il problema risiede nella configurazione di PHP nel quale la variabile error_reporting è settata = E_ALL.

    Quello che non mi spiego è che a me sembra che le variabili siano dichiarate nel mio modulo.
    Allego uno stralcio del modulo:

    <?php
    session_start();

    if (!isset($_POST['txtNominativo'])){
    $txtNominativo="";
    session_register("$txtNominativo");}
    if (!isset($_POST['eMail'])){
    $eMail="";
    session_register("$eMail"); }
    if (!isset($_POST['txtUser'])){
    $txtUser="";
    session_register("$txtUser");}
    if (!isset($_POST['txtPwd'])){
    $txtPwd="";
    session_register("$txtPwd");}
    if (!isset($_POST['txtPwdconf'])){
    $txtPwdconf="";
    session_register("$txtPwdconf"); }


    include "conn_class.php";
    include "base_html.php";
    top();
    $DB= new conn();

    ?>


    <body>
    <div id="container">
    <div id="container2">
    <div id="header">
    <h1>Html.it</h1>
    </div>
    <div id="content">
    <?php
    if (isset($_POST['cmdLogin'])) {
    $error=0;
    if (!check_nominativo($txtNominativo)) {
    $msg='
    Campo nominativo vuoto o non corretto
    ';
    $error=1;
    }

    if (!check_email($eMail)) {
    $msg='Campo Email vuoto o non corretto
    ';
    $error=1;
    }...............

    Le variabili $txtNominativo, eMail ( e tutte quelle dichiarate con session_register) sono quelle incriminate.
    Secondo voi c'è qualche altro parametro di configurazione da settare ?
    CIao e grazie.

  2. #2
    Quello che non mi spiego è che a me sembra che le variabili siano dichiarate nel mio modulo.
    Se lo fossero il notice non verrebbe sollevato.

    Ti suggerisco di leggere questo articolo:

    Notice: Undefined variable / index / offset

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    122
    Ciao,
    ho letto l'articolo, ho provato a sostituire la mia istruzione

    if (!isset($_POST['txtNominativo'])){
    $txtNominativo="";

    con $_POST['txtNominativo'] = isset($_POST['txtNominativo']) ? $_POST['txtNominativo'] : '';

    Secondo me sono due modi diversi per dire la stessa cosa....ed infatti il programma continua a darmi lo stesso errore nell'istruzione successiva.....

    session_register("$txtNominativo");

    l'errore è Undefined variable: txtNominativo in D:\www\Europeo\BoxRegistra.php on line 5

    Il mio dubbio rimane.....nel senso che anche la configurazione PHP4 prevede di inviare dei messaggi di notifica per variabili non dichiarate (e ne ho prese di segnalazioni !!) ma questo modulo funziona........

  4. #4
    Secondo me sono due modi diversi per dire la stessa cosa.
    Non lo sono.

    Per quale motivo ritieni che $_POST['txtNominativo'] e $txtNominativo siano la stessa cosa?

    Cerca di capire per quale motivo questo codice soleva un notice:

    Codice PHP:
    <?php
    if (!isset($_POST['variable'])) {
      
    $variable '';
    }
    echo(
    $variable);
    ?>
    mentre questo non lo fa:

    Codice PHP:
    <?php
    $variable 
    = isset($_POST['variable']) ? $_POST['variable'] : '';
    echo(
    $variable);
    ?>

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    makikaz, hai l'aria di uno che ha imparato ad usare php 5-6 anni fa, poi è andato a farsi un giro ed è tornato un'era informatica più tardi.
    Oppure, più semplicemente, hai scaricato uno script vecchio come me.

    Il tuo problema è che consideri $_POST['x'] sinonimo di $x, mentre ormai da tempo non usa più fare così, a meno di non usare i famigerati register_globals a on. E poi perché usi session_register()? Anche quello sa un po' di muffa....

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    122
    Ciao,
    ho provato a modificare il mio codice con questa sintassi :

    if (!isset($_POST['txtNominativo'])){
    $txtNominativo="";}
    else{
    $txtNominativo=$_POST['txtNominativo'];}

    e sembra che il tutto ora funzioni.....
    Probabilmente il modo in cui ho scritto il codice non è bello stilisticamente...però ..scusate questa sintassi :

    $variable = isset($_POST['variable']) ? $_POST['variable'] : '';

    posso cercare di untuire cosa vuole fare ma non la conosco......

    Penso di avere capito la differenza di configurazione fra i due PHP....questo di casa ha la variabile
    register_globals a off....probabilmente quella dell'ufficio (verificherò Lunedì) ce l'ha settata a On.

    Magari avessi imparato il php 5-6 anni fa.....purtroppo ci sto lavorando solo da un mesetto, e qui non è un problema solo di linguaggio..quello un pò alla volta si impara....è la filosofia di una piattaforma completamente diversa rispetto a quelle su cui ho lavorato per svariati anni.

    Il problema è che ho fatto incetta teorica di vari corsi, manuali, (la maggior parte riferiti al php4) e adesso sto cercando di mettere in pratica.....però fino a quando non si sbatte il naso si fa un pò di confuzione.......abbiate comprensione...e grazie Filippo per il tuo modo di farmi approcciare al problema....

  7. #7

  8. #8
    Originariamente inviato da filippo.toso
    http://www.php.net/manual/en/languag...arison.ternary
    visto che si parla di notice ed isset, questa pagina mostra un esempio sbagliato:
    codice:
    $action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
    mai usare empty se non quando si sa esattamente cosa si sta facendo, poichè empty torna true anche con una stringa tipo "0", o variabili settate, ergo usare isset per sapere se una variabile è stata definita oppure no
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    122
    Originariamente inviato da luca200
    E poi perché usi session_register()? Anche quello sa un po' di muffa....
    OK...ragazzi,un pò alla volta sto facendo ordine.....
    ora non prendo più i Notice...ed ho sostituito session_register con $_SESSION['variabile']=valore.

    Grazie a tutti per i suggerimenti....e..la pazienza.

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.