Visualizzazione dei risultati da 1 a 5 su 5

Discussione: problema php 5.2.8

  1. #1

    problema php 5.2.8

    Ciao a tutti di solito uso questo script per modificare i campi cotenuti in un semplicissimo form; funziona alla perfezione su tutti i server che ho provato, tranne che su uno che ha installato php 5.2.8 (server win).

    In pratica se un utente cambia i valori dentro al form e preme modifica la tabella si dovrebbe aggiornare.
    c'e' qualche opzione sul php.ini che deve essere impostata in modo particolare per farlo funzionare? o devo cambiare in modo particolare il php per farglielo leggere?

    if (isset($modificatesto)) {

    $modify = "UPDATE news SET data='$data', titolo='$titolo' , descrizione='$descrizione]' ";

    $query = mysql_query($modify);


    $search = "SELECT * from news order by id DESC";

    $query = mysql_query($search);

    $search = "SELECT * from news order by id DESC";
    $query = mysql_query($search);
    while ($data=mysql_fetch_array($query)) {
    $nameform="clienti".$data['id'];

    echo"

    <table>
    <form action=\"$_SERVER[PHP_SELF]\" method=\"post\" name=\"$nameform\" enctype=\"multipart/form-data\">
    <input type=\"hidden\" name=\"id\" value=\"$data[id]\">
    <tr>
    <td>Data</td>
    <td><input type=\"text\" name=\"data\" value=\"$data[data]\"></td>
    </tr>
    <tr>
    <td>Titolo</td>
    <td><input type=\"text\" name=\"titolo\" value=\"$data[titolo]\"></td>
    </tr>
    <tr>
    <td>Descrizione</td>
    <td><textarea rows=\"15\" cols=\"50\" id=\"textarea1\" name=\"descrizione\">$data[descrizione]</textarea></td>
    </tr>
    <tr>
    <td><input type=\"submit\" name=\"modificatesto\" value=\"Modifica\"><input type=\"submit\" name=\"eliminatesto\" value=\"Elimina\">


    </td>
    </tr>
    </form>
    </table>

    ";

    }
    }

  2. #2
    if (isset($modificatesto)) {

    questo lascia presumere che ora hai register_globals in OFF

    i dati sono in $_POST

    $_POST['modificatesto']

    e cosi' anche per gli altri. Ma si tratta ormai della preistoria del php. Occhio alla data di questa pillola di Chris:

    http://forum.html.it/forum/showthrea...hreadid=245215

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Ciao,
    nel tuo script (se è il file completo) ci sono una marea di errori di sicurezza.

    Codice PHP:
    if (isset($modificatesto)) {

        
    $modify "UPDATE news SET data='$data', titolo='$titolo' , descrizione='$descrizione]' ";

        
    $query mysql_query($modify);

        
    $search "SELECT * from news order by id DESC";

        
    $query mysql_query($search);

        
    $search "SELECT * from news order by id DESC";
        
    $query mysql_query($search);
        while (
    $data=mysql_fetch_array($query)) {
            
    $nameform="clienti".$data['id'];

            echo 
    "
                <table>
                    <form action=\"
    $_SERVER[PHP_SELF]\" method=\"post\" name=\"$nameform\" enctype=\"multipart/form-data\">
                        <input type=\"hidden\" name=\"id\" value=\"
    $data[id]\">
                        <tr>
                        <td>Data</td>
                        <td><input type=\"text\" name=\"data\" value=\"
    $data[data]\"></td>
                        </tr>
                        <tr>
                        <td>Titolo</td>
                        <td><input type=\"text\" name=\"titolo\" value=\"
    $data[titolo]\"></td>
                        </tr>
                        <tr>
                        <td>Descrizione</td>
                        <td><textarea rows=\"15\" cols=\"50\" id=\"textarea1\" name=\"descrizione\">
    $data[descrizione]</textarea></td>
                        </tr>
                        <tr>
                        <td><input type=\"submit\" name=\"modificatesto\" value=\"Modifica\"><input type=\"submit\" name=\"eliminatesto\" value=\"Elimina\">


    </td>
                        </tr>
                    </form>
                </table>
            "
    ;
        }

    Partiamo dal primo IF: la variabile "$modificatesto" da dove proviene? Dimmi che non è quella del form...perchè questo vuol dire che tieni abilitata l'opzione php "register_globals" che è male.

    Stesso discorso vale per i parametri "$data" e "$titolo" passati alla query, senza contare che passare qualcosa proveniente dall'esterno (input di un utente) direttamente ad una query ti mette di fronte a tanti rischi di SQL Injections.

    Ad ogni modo non vedo da nessuna parte una connessione al database...

    Inoltre esattamente che erorre ti da la pagina?
    Administrator of NAMDesign.Net

  4. #4
    Lo script completo è questo.
    La pagina si presenta con un form vuoto per un nuovo inserimento e sotto l'elenco delle news con la possibilità di cancellarle o modificarle.
    Ho provato anche a mettere al posto di if (isset($modificatesto)) {


    if (isset($_POST['modificatesto'])) {

    $modify = "UPDATE news SET data='$_POST[data]', titolo='$_POST[titolo]' , descrizione='$_POST[descrizione]' ";

    in questo modo mi imposta i nuovi valori non solo sulla news che ho modificato ma su tutte le news.

    Premetto che sto ancora imparando e sono partita dagli esempi che avevo a disposizione

    "register_globals" è settata su off sul server dove sto provando, penso sia per quello che non ho diversi problemucci sulle variabili.

    Ma essendo cosi impostato senza andare a mettere su on come dovrei procedere?


    codice:
     <?php
    
    // connessione al database////
    
    
    
    include("../config.inc.php");
    $db = mysql_connect($db_host, $db_user, $db_password);
    if ($db == FALSE)
    die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
    mysql_select_db($db_name, $db)
    or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    
    
    
    
    
    // tabella VUOTA ////
    
    echo"
    
    <table>
    <tr>
      <td bgcolor=\"#FFCC00\">Inserisci una nuova NEWS</td>
    </tr>
    <tr>
      <td height=30></td>
    </tr>
    <form action=\"$_SERVER[PHP_SELF]\" method=\"post\" name=\"clienti\" enctype=\"multipart/form-data\">
    
    <tr>
    <td>data</td>
    <td><input type=\"text\" name=\"data\" size=50></td>
    </tr>
    <tr>
    <td>titolo</td>
    <td><input type=\"text\" name=\"titolo\" size=50></td>
    </tr>
    <tr> 
    <td>Descrizione</td>	
    <td><textarea rows=\"15\" cols=\"50\" id=\"textarea1\" name=\"descrizione\"></textarea></td>
    </tr>
    <tr>
    <td><input type=\"submit\" name=\"aggiungi\" value=\"Aggiungi\">
    
    
    
    </td>
    </tr>
    </form>
    
    <tr>
      <td bgcolor=\"#FFCC00\">News presenti nel database</td>
    </tr>
    <tr>
      <td height=30></td>
    </tr>
    <table>
    
    ";
    
    
    
    // quando si vuole MODIFICARE/UPDATE il testo////
    
    
    
    if (isset($modificatesto)) {
    
    $modify = "UPDATE news SET data='$data', titolo='$titolo' , descrizione='$descrizione' ";
    
    $query = mysql_query($modify);
    
    
    
    $search = "SELECT * from news order by id DESC";
    
    $query = mysql_query($search);
    
    
    $numero= mysql_num_rows($query);
    $numpag=$numero/4;
    settype($numpag, 'integer');
    $div=$numero % 4;
    if ($div!=0 && $numero!=0) {
    $numpag++;
    
    }
    
    if ($limita=="") {
    $limita=0;
    }
    
    
    
    $search = "SELECT * from news order by id DESC LIMIT $limita,2";
    $query = mysql_query($search);
    while ($data=mysql_fetch_array($query)) {
    $nameform="clienti".$data['id'];
    
    
    
    echo"
    
    <table>
    <form action=\"$_SERVER[PHP_SELF]\" method=\"post\" name=\"$nameform\" enctype=\"multipart/form-data\">
    <input type=\"hidden\" name=\"id\" value=\"$data[id]\">
    <tr>
    <td>Data</td>
    <td><input type=\"text\" name=\"data\" value=\"$data[data]\"></td>
    </tr>
    <tr>
    <td>Titolo</td>
    <td><input type=\"text\" name=\"titolo\" value=\"$data[titolo]\"></td>
    </tr>
    <tr> 
    <td>Descrizione</td>	
    <td><textarea rows=\"15\" cols=\"50\" id=\"textarea1\" name=\"descrizione\">$data[descrizione]</textarea></td>
    </tr>
    <tr>
    <td><input type=\"submit\" name=\"modificatesto\" value=\"Modifica\"><input type=\"submit\" name=\"eliminatesto\" value=\"Elimina\">
    
    
    </td>
    </tr>
    </form>
    </table>
    
    ";
    
    }
    
    echo"
    
    <tr bgcolor=#FFCC66>
    <td>pagina ";
    
    $serata=1;
    $limita=0;
    while($numpag>0) {
    
    echo"
    
                            <a href=$_SERVER[PHP_SELF]?limita=$limita>$serata</a> 
    
    
    
    ";
    
    $numpag=$numpag-1;
    $serata++;
    $limita=$limita+4;
    
    }
    
    echo"
    </td>
    </tr>
    
    ";
    
    } 
    
    
    
    ///per ELIMINARE/DELETE il testo////
    
    else {
    
    
    
    if (isset($eliminatesto)) {
    
    
    
    
    
    $search = "DELETE from news where id='$id'";
    
    mysql_query($search);
    
    $search = "SELECT * from news order by id DESC";
    
    $query = mysql_query($search);
    $numero= mysql_num_rows($query);
    $numpag=$numero/4;
    settype($numpag, 'integer');
    $div=$numero % 4;
    if ($div!=0 && $numero!=0) {
    $numpag++;
    }
    
    
    
    if ($limita=="") {
    $limita=0;
    }
    
    
    
    
    
    $search = "SELECT * from news order by id DESC LIMIT $limita,2";
    $query = mysql_query($search);
    while ($data = mysql_fetch_array($query)) {
    $nameform="clienti".$data['id'];
    
    
    
    echo"
    
    <table>
    <form action=\"$_SERVER[PHP_SELF]\" method=\"post\" name=\"$nameform\" enctype=\"multipart/form-data\">
    <input type=\"hidden\" name=\"id\" value=\"$data[id]\">
    <tr>
    <td>Data</td>
    <td><input type=\"text\" name=\"data\" value=\"$data[data]\"></td>
    </tr>
    <tr>
    <td>Titolo</td>
    <td><input type=\"text\" name=\"titolo\" value=\"$data[titolo]\"></td>
    </tr>
    <tr> 
    <td>Descrizione</td>	
    <td><textarea rows=\"15\" cols=\"50\" id=\"textarea1\" name=\"descrizione\">$data[descrizione]</textarea></td>
    </tr>
    <tr>
    <td><input type=\"submit\" name=\"modificatesto\" value=\"Modifica\"><input type=\"submit\" name=\"eliminatesto\" value=\"Elimina\">
    
    
    </td>
    </tr>
    </form>
    </table>
    
    ";
    
    }
    
    echo"
    
    <tr bgcolor=#FFCC66>
    <td>pagina ";
    $serata=1;
    $limita=0;
    while($numpag>0) {
    
    echo"
    
                            <a href=$_SERVER[PHP_SELF]?limita=$limita>$serata</a> 
    
    
    
    ";
    
    $numpag=$numpag-1;
    $serata++;
    $limita=$limita+4;
    }
    echo"
    </td>
    </tr>
    ";
    
    } 
    
    
    
    ///// per AGGIUNGERE/INSERT al database////
    
    
    
    else {
    
    
    
    if (isset($aggiungi)) {
    
    $insert = "INSERT INTO news (data, titolo , descrizione ) VALUES ('$data', '$titolo' , '$descrizione')";
    $query = mysql_query($insert);
    
     
    
    $search = "SELECT * from news order by id DESC";
    $query = mysql_query($search);
    
    $numero= mysql_num_rows($query);
    $numpag=$numero/4;
    settype($numpag, 'integer');
    $div=$numero % 4;
    if ($div!=0 && $numero!=0) {
    $numpag++;
    }
    
    
    
    if ($limita=="") {
    
    $limita=0;
    
    }
    
    $search = "SELECT * from news order by id DESC LIMIT $limita,2";
    
    $query = mysql_query($search);
    while ($data = mysql_fetch_array($query)) {
    $nameform="clienti".$data['id'];
    
    
    
    echo"
    
    <table>
    <form action=\"$_SERVER[PHP_SELF]\" method=\"post\" name=\"$nameform\" enctype=\"multipart/form-data\">
    <input type=\"hidden\" name=\"id\" value=\"$data[id]\">
    <tr>
    <td>Data</td>
    <td><input type=\"text\" name=\"data\" value=\"$data[data]\"></td>
    </tr>
    <tr>
    <td>Titolo</td>
    <td><input type=\"text\" name=\"titolo\" value=\"$data[titolo]\"></td>
    </tr>
    <tr> 
    <td>Descrizione</td>	
    <td><textarea rows=\"15\" cols=\"50\" id=\"textarea1\" name=\"descrizione\">$data[descrizione]</textarea></td>
    </tr>
    <tr>
    <td><input type=\"submit\" name=\"modificatesto\" value=\"Modifica\"><input type=\"submit\" name=\"eliminatesto\" value=\"Elimina\">
    
    
    </td>
    </tr>
    </form>
    </table>
    
    ";
    
    }
    
    echo"
    
    <tr bgcolor=#FFCC66>
    <td>pagina ";
    
    $serata=1;
    $limita=0;
    while($numpag>0) {
    
    echo"
    
                            <a href=$_SERVER[PHP_SELF]?limita=$limita>$serata</a> 
    
    
    
    ";
    
    $numpag=$numpag-1;
    $serata++;
    $limita=$limita+4;
    }
    
    echo"
    </td>
    </tr>
    ";
    
    } 
    
    
    
    ///// fa vedere la lista dei risultati/SELECT /////
    
    
    
    else {
    
    
    
    $search = "SELECT * from news order by id DESC";
    
    $query = mysql_query($search);
    $numero= mysql_num_rows($query);
    $numpag=$numero/4;
    settype($numpag, 'integer');
    $div=$numero % 4;
    if ($div!=0 && $numero!=0) {
    $numpag++;
    
    }
    
    
    
    if ($limita=="") {
    
    $limita=0;
    
    }
    
    $search = "SELECT * from news order by id DESC LIMIT $limita,2";
    
    $query = mysql_query($search);
    while ($data = mysql_fetch_array($query)) {
    $nameform="clienti".$data['id'];
    
    
    
    echo"
    
    <table>
    <form action=\"$_SERVER[PHP_SELF]\" method=\"post\" name=\"$nameform\" enctype=\"multipart/form-data\">
    <input type=\"hidden\" name=\"id\" value=\"$data[id]\">
    <tr>
    <td>Data</td>
    <td><input type=\"text\" name=\"data\" value=\"$data[data]\"></td>
    </tr>
    <tr>
    <td>Titolo</td>
    <td><input type=\"text\" name=\"titolo\" value=\"$data[titolo]\"></td>
    </tr>
    <tr> 
    <td>Descrizione</td>	
    <td><textarea rows=\"15\" cols=\"50\" id=\"textarea1\" name=\"descrizione\">$data[descrizione]</textarea></td>
    </tr>
    <tr>
    <td><input type=\"submit\" name=\"modificatesto\" value=\"Modifica\"><input type=\"submit\" name=\"eliminatesto\" value=\"Elimina\">
    
    
    </td>
    </tr>
    </form>
    </table>
    
    ";
    
    }
    
    echo"
    <tr bgcolor=#FFCC66>
    <td>pagina ";
    $serata=1;
    $limita=0;
    while($numpag>0) {
    
    echo"
    
                            <a href=$_SERVER[PHP_SELF]?limita=$limita>$serata</a> 
    
    
    
    ";
    $numpag=$numpag-1;
    $serata++;
    $limita=$limita+4;
    }
    
    echo"
    </td>
    </tr>
    ";
    }
    }
    }
    
    ?>

  5. #5
    non ci hai ancora scritto esattamente che errore ti da.

    Comunque riguardo il codice "corretto" puoi prendere spunto da qui:
    codice:
    // Se viene effettuata una richiesta in POST
    if ( $_SERVER['REQUEST_METHOD'] == "POST" ) {
    
    	// Se il campo data è stato impostato allora $data = $_POST['data'] altrimenti sarà vuoto
    	$data = isset($_POST['data']) ? addslashes($_POST['data']) : "";
    	$titolo = isset($_POST['titolo']) ? addslashes($_POST['data']) : "";
    	$descrizione = isset($_POST['descrizione']) ? addslashes($_POST['descrizione']) : "";
    	
    	// Questi sono dei controlli standard di base
    	// andrebbero corretti e migliorati riguardo la tua specifica situazione
    	// ad esempio sarebbe il caso di verificare che la data sia nel formato giusto e che esista
    	// poichè se uno nel campo data inserisce "patate" sicuramente è un errore e devi prevederlo e segnalarlo
    	
    	// Aggiorno la news
    	$query = "
    		UPDATE news 
    		SET
    			data = '{$data}',
    			titolo = '{$titolo}',
    			descrizione = '{$descrizione}'
    		WHERE 
    			id = '....'
    	";
    	// Se aggiorni una news, una specifica news, devi poterla identificare.
    	// Quale news stai aggiornando?!
    	
    	$result = mysql_query($query);
    	// Controlla che la query sia stata eseguita con successo
    	if ( !$result ) {
    		die("Si è verificato un problema nell'aggiornamento della news!");
    	}
    	
    	// Elenco delle news
    	$query = "
    		SELECT *
    		FROM news
    		ORDER BY id DESC
    	";
    	
    	$result = mysql_query($query);
    	while ( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
    		$id = $row['id'];
    		$titolo = $row['titolo'];
    		$descizione = $row['descrizione'];
    		$data = $row['data'];
    		
    		// esegui altro codice
    	}
    
    }
    Inoltre quando inserisci del testo in una variabile PHP devi:
    Codice PHP:
    // Caso 1:
    $variabile "Ciao mondo come va";

    // Caso 2:
    $variabile "Oggi è una \"bella\" giornata";

    // Caso 3:
    $variabile "Mi hanno detto che {$_POST['nome']} è andato al mare oggi";

    // Questo non funziona:
    $variabile "Mi hanno detto che $_POST['nome']"
    Questa seconda parte per dire che quando fai:
    codice:
    <form action=\"$_SERVER[PHP_SELF]\" method=\"post\"
    sarebbe più corretto scrivere:
    codice:
    <form action=\"{$_SERVER['PHP_SELF']}\" method=\"post\"
    Administrator of NAMDesign.Net

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.