Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    1,742

    script non funzionante su php 5.3

    Buonasera,
    ho da poco cambiato hosting e il sito adesso risiede su un server con php 5.3.

    Purtroppo alcuni miei script evidentemente non sono più compatibili con l'ultima versione di php e non funzionano più

    Il codice seguente è una pagina che mi permette di inserire una nuova marca in un database, e all'occorrenza modificarla anche successivamente.
    Purtroppo quando inserisco una nuova marca e premo invio non accade nulla e la pagina si ricarica di nuovo.
    In pratica non viene inserito alcun dato nel database.

    <?php


    if($nome_marca_form){
    $nome_marca_form = str_replace("\<","&lt;",$nome_marca_form);
    $nome_marca_form = str_replace("\>","&gt;",$nome_marca_form);
    $nome_marca_form = str_replace("'","'",$nome_marca_form);
    $nome_marca_form = str_replace("\"",""",$nome_marca_form);
    if(!$id){
    $query = "INSERT INTO marche (nome_marca) VALUES ('$nome_marca_form')";
    }
    else{
    $query = "UPDATE marche SET nome_marca='$nome_marca_form' where id='$id'";


    }
    if (mysql_query($query, $db)){
    echo "
    <script language='JavaScript'>
    this.location = 'show_marche.php';
    </script>
    ";
    exit;
    }
    else{
    $message = "Si è verificato un errore durante l'operazione";
    }
    }
    $nome_marca = str_replace("'","'",$nome_marca);
    $nome_marca = str_replace('"',""",$nome_marca);
    $nome_marca = str_replace("\<","&lt;",$nome_marca);
    $nome_marca = str_replace("\>","&gt;",$nome_marca);
    ?>
    <html>
    <body bgcolor='#FFFFFF'>
    <form method=post action="add_marca.php" enctype="multipart/form-data">
    <input type='hidden' name='id' value="<? echo $id ?>">
    <table width='50%' border=0 cellpadding=0 cellspacing=0 bgcolor='#FFFFFF'>
    <tr>
    <td>
    <?php echo "<font size='1' color='#333333' face='verdana,arial'><b>$message</b></font>"; ?>
    <table width='100%' border=1 cellpadding=0 cellspacing=0 bgcolor='#F0F8FF'>
    <tr>
    <td colspan=2 bgcolor='#D2E9FF'>
    <font size='1' color='#333333' face='verdana,arial'><b>Aggiunta Marca</b></font>
    </td>
    </tr>
    <tr>
    <td width='50%'>
    <font size='1' color='#333333' face='verdana,arial'><b>Nome</b></font>
    </td>
    <td width='50%'>
    <input type='text' name='nome_marca_form' maxlength='50' style="width:275;" value="<? echo $nome_marca ?>">
    </td>
    </tr>
    <tr>
    <td colspan=2 align='right'>
    <input type='submit' value='invia'>
    </td>
    </tr>
    <tr>
    <td height='20' bgcolor='#D2E9FF' colspan=2 align='right'>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>


    </body>
    </html>


    Potreste darci un'occhiata e mi dite quale sono le modifiche da apportare?
    grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Non vedo nessun $_POST['...'] che dovrebbe recuperare i dati provenienti dal form, quindi che valore dovrebbe venire inserito nel db?
    Se fai affidamento su register_globals, allora il problema è lì, sul server sarà sicuramente impostato ad off, come è giusto che sia.
    Per prendere i dati dal form usa $_POST['nome_campo']

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    1,742
    Ciao Alhazred, grazie per il consiglio.
    Ho provato ad inserire il codice $nome_marca = $_POST['nome_marca_form'];

    Ma nulla, come mai?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    1,742
    OK, ho apportato alcune modifiche al codice e cercato di renderlo più leggero. Ho letto la guida PHP/MySQL che segnali in firma, in particolare dove viene spiegato l'inserimento dei dati da un form.

    Ho apportato queste modifiche:

    1. ho dichiarato le variabili $_GET in quanto la pagina serve anche a modificare un dato già inserito precedentemente.
    $id = $_GET['id'];
    $nome_marca = $_GET['nome_marca'];

    2. Ho inserito la variabile $_POST per la variabile da inserire tramite form

    in particolare ho cambiato questa parte di codice
    if($nome_marca_form){
    $nome_marca_form = str_replace("\<","&lt;",$nome_marca_form);
    $nome_marca_form = str_replace("\>","&gt;",$nome_marca_form);
    $nome_marca_form = str_replace("'","'",$nome_marca_form);
    $nome_marca_form = str_replace("\"",""",$nome_marca_form);

    con questa:


    if(isset($_POST['nome_marca_form'])){
    $nome_marca_form = addslashes(filter_var($_POST['nome_marca_form'], FILTER_SANITIZE_STRING));

    è corretta? il filter_var e addslashes sembra che facciano quello che faceva prima str_replace.

    Sicuramente c'è altro da modificare in quanto lo script una volta inserito una nuova marca mi rimanda alla pagina show_marche.php ma non appare nessuna marca aggiunta. Come se non salvasse la variabile nel db.



    if(!$id){
    $query = "INSERT INTO marche (nome_marca) VALUES ('$_POST[nome_marca_form]')";
    }

    Cosa c'è altro da modificare?
    grazie
    Ultima modifica di kiapparo; 16-02-2014 a 11:33

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    1,742
    questo il codice aggiornato e modificato ma ancora non funzionante.

    <?php


    $id = $_GET['id'];
    $nome_marca = $_GET['nome_marca'];




    if(isset($_POST['submit'])){
    $nome_marca_form = addslashes(filter_var($_POST['nome_marca_form'], FILTER_SANITIZE_STRING));


    if (!isset($_GET['id'])){
    $query = "INSERT INTO marche (nome_marca) VALUES ('$_POST[nome_marca_form]')";
    }
    else{
    $query = "UPDATE marche SET nome_marca='$nome_marca_form' where id='$id'";


    }
    if (mysql_query($query, $db)){
    echo "
    <script language='JavaScript'>
    this.location = 'show_marche.php';
    </script>
    ";
    exit;
    }
    else{
    $message = "Si è verificato un errore durante l'operazione";
    }
    }
    $nome_marca = addslashes(filter_var($_POST['nome_marca'], FILTER_SANITIZE_STRING));
    ?>
    <html>
    <body bgcolor='#FFFFFF'>
    <form method=post action="add_marca.php" enctype="multipart/form-data">
    <input type='hidden' name='id' value="<? echo $id ?>">
    <table width='50%' border=0 cellpadding=0 cellspacing=0 bgcolor='#FFFFFF'>
    <tr>
    <td>
    <?php echo "<font size='1' color='#333333' face='verdana,arial'><b>$message</b></font>"; ?>
    <table width='100%' border=1 cellpadding=0 cellspacing=0 bgcolor='#F0F8FF'>
    <tr>
    <td colspan=2 bgcolor='#D2E9FF'>
    <font size='1' color='#333333' face='verdana,arial'><b>Aggiunta Marca</b></font>
    </td>
    </tr>
    <tr>
    <td width='50%'>
    <font size='1' color='#333333' face='verdana,arial'><b>Nome</b></font>
    </td>
    <td width='50%'>
    <input type='text' name='nome_marca_form' maxlength='50' style="width:275;" value="<? echo $nome_marca ?>">
    </td>
    </tr>
    <tr>
    <td colspan=2 align='right'>
    <input type='submit' name='submit' value='invia'>
    </td>
    </tr>
    <tr>
    <td height='20' bgcolor='#D2E9FF' colspan=2 align='right'>
    <font size='1' color='#333333' face='verdana,arial'><b>CellularTopic.com</b></font>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>


    </body>
    </html>

  6. #6
    Togli enctype="multipart/form-data" dal form.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2001
    Messaggi
    1,742
    grazie adesso funziona

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.