Visualizzazione risultati 1 fino 9 di 9

Discussione: Script che non funziona più online ma va bene in locale

  1. #1
    Guest

    Predefinito Script che non funziona più online ma va bene in locale

    ciao gente.
    sono abbastanza perplesso

    ho creato un sito in locale che va benissimo...
    l'ho uppato... e ora non funge più!
    Codice PHP:
    <?php
    session_start
    ();
    include_once(
    'spt/check_login.php');
    include(
    'spt/conn.php');
    error_reporting(E_ALL);
    #ini_set('display_errors', 1);
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Creazione album</title>
    <link rel="stylesheet" href="css/stile.css" type="text/css" media="screen" />

    </head>

    <?php
    $creato
    = 'no';
    $base = "img/immagini/";

    if(
    $loggato != 1){die("Non hai il diritto di visualizzare quest'area: devi loggarti. Torna indietro per farlo.");}

    if(isset(
    $_POST['crea_album']) && $_POST['crea_album'] == "Crea l'album!"){
    $nome_a = $_POST['nome_album'];
    if(
    $nome_a == ''){
    die(
    "<div align=center><h1>&nbsp;&nbsp;Errore&nbsp;&nbsp;</h1>Devi inserire un nome per l'album.<br><a href='javascript:history.back()'>Indietro</a>");
    }
    if(
    strpos($nome_a,"'")){
    $path = explode("'",$nome_a);
    $path = implode("",$path);
    $path = strtolower($path);
    $path = explode(" ",$path);
    $path = implode($path);
    }
    else{
    $path = strtolower($nome_a);
    $path = explode(" ",$path);
    $path = implode($path);
    }
    $dest = $base.$path;
    if (!(
    file_exists($dest))){
    mkdir($dest,"0777");
    mkdir($dest."/TB","0777");
    }

    $data = time();
    $nome_a = addslashes($_POST['nome_album']);
    $query = mysql_query("SELECT * FROM album WHERE nome_album = '$nome_a'") or die(mysql_error());
    if (
    mysql_num_rows($query) > 0) {
    die(
    '<div align=center><h1>&nbsp;&nbsp;Errore&nbsp;&nbsp;</h1>Spiacente, il nome <strong>'.$nome_a.'</strong> è già stato usato per un altro album, devi sceglierne uno diverso.<br>
    <a href=javascript:history.back()>Torna Indietro</a>'
    );
    }
    $descr = addslashes($_POST['descrizione']);
    $q = "INSERT INTO album (id_album, nome_album, nome_fldr, data_creazione, descrizione) VALUES ('','$nome_a', '$path','$data','$descr')";
    $go = mysql_query($q) or die(mysql_error());
    $id = mysql_insert_id();
    if(!
    $go){
    die(
    mysql_error());
    }
    else{
    $creato = 'si';
    $k = 1;
    echo
    "<div align=center><h1>&nbsp;&nbsp;Creazione avvenuta con successo&nbsp;&nbsp;</h1>
    Ora puoi iniziare ad inserire le immagini<br>
    <a href='spt/upload.php?id_a=
    $id&fldr=$path'>Invia immagini</a></div>";
    }
    }

    ?>



    <body>
    <?php
    if ($creato == 'no'){
    ?>
    <div align="center"><h1>&nbsp;&nbsp;Creazione album&nbsp;&nbsp;</h1>
    In questa sezione è possibile creare un album: inserisci un nome identificativo ed una breve descrizione. <br />
    Successivamente potrai inserire le immagini.<br /><br />
    <div style="border: 1px dashed; width: 40%; background-image:url(img/crea128.png); background-repeat:no-repeat; background-position:right" align="left">
    <form name="upload" method="post" action="crea_album.php">
    <table>
    <tr>
    <td>
    Nome album:
    </td>
    <td>
    <input type="text" name="nome_album" />
    </td>
    </tr>
    <tr valign="top">
    <td>
    Descrizione:
    </td>
    <td>
    <textarea name="descrizione" cols="30" rows="5"></textarea>
    </td>
    </tr>
    <tr>
    <td>
    </td>
    <td>
    <input type="submit" name="crea_album" value="Crea l'album!" />
    </td>
    </tr>
    </table>
    <?php
    }
    ?></form></div><br /><div align="center"><img src='img/home48.png'><br><a href='index.php'> Clicca qui per tornare alla home page</a>.</div></div>
    <br />
    </body>
    </html>

  2. #2
    Guest

    Predefinito

    Cosa non funziona?
    Cosa dovrebbe fare e cosa, invece, fa?


    Ciao!

  3. #3
    Guest

    Predefinito

    se compili il form che sta in basso, dovrebbe poi elaborarlo, inserire i dati nel database, cambiare pagina.
    invece...
    ricarica la stessa pagina e non fa niente :(

    tieni conto che se clicco sul pulsante senza compilare il form non fa nulla. teoricamente dovrebbe ALMENO avvisarmi che devo compilare il campo "nome_album".
    invece è come se non rilevasse il click su invia :(
    Ultima modifica di lsdforum : 04-03-2008 alle ore 00.35.13

  4. #4
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    prova a stampare $_POST all'inizio per vedere se è piena
    Codice PHP:
    echo "<pre>";
    print_r( $_POST );
    echo
    "</pre>";

  5. #5
    Guest

    Predefinito

    è uscito questo:
    Codice PHP:
    Array
    (
    [
    nome_album] => PROVA INPUT
    [descrizione] => PROVA TEXTAREA
    [crea_album] => Crea l\'album!
    )
    l'errore sta nel fatto che non riconosce "crea l'album" gli da problema l'apostrofo.
    Ultima modifica di aspratopec : 04-03-2008 alle ore 00.54.30

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Sei sicuro che non stampi l'apostrofo? Mi sembra molto strano. Di solito viene aggiunto un backslash automatico ("Crea l\'album!"). Inoltre potresti togliere dall'if il pezzo && $_POST['crea_album'] == "Crea l'album!" perché non mi sembra necessario.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    direi che il problema sta li, o molto vicino. Le richieste post aggiungono slash davanti ad un sacco di cose, per sicurezza, fra cui l'apostrovo, ma la cosa può variare da server a server. La prima cosa che va fatta sui dati di $_POST è stripslashes().

    Poi, quando vuoi inserire i dati nel database, invece di addslashes() usa mysql_real_escape_string().
    Ultima modifica di dreadnaut : 04-03-2008 alle ore 12.01.42 Motivo: + real

  8. #8
    Guest

    Predefinito

    allora, il problema risiede sicuramente nell'apostrofo visto che cambiando nome tutto va bene.
    il secondo confronto lo lascio, in genere se lascio solo il primo check non ho gli stessi risultati del check con due confronti.

    che differenza c'è tra gli addslashes e escape_string?

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,266

    Predefinito

    la differenza è che mysql_real_escape_string() è fatta apposta, e non protegge solo gli apostrofi ma tutti (e soli) i caratteri che potrebbero disturbare la sintassi di una query.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •