Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 25
  1. #11
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    ok grazie.
    il form contiene ovviamente vari campi:
    titolo
    descrizione
    file1
    file2
    file3
    data (del corso in questione)
    numero partecipanti
    punti (che il corso darà)
    costo (del corso)

    il form scrive su db. Nella descrizione sarà indispensabile che gli a capo vengano convertiti in "br". Non ci sarà da nessuna parte altro inserimento di tag html. Ho letto la guida, direi che mi occorre solo questo; che non si possa inserire html, che non si possa inserire sql, che i vari numeri siano veramente numeri e ancora non mi è molto chiara la storia degli apici, perchè al momento non ho nessun controllo, ma nemmeno problemi con gli apici, poi forse non ho capito bene....
    grazie
    Si fanno sempre nuove scoperte

  2. #12
    OK, allora io farei così.

    I testi li filtrerei nel seguente modo:
    Codice PHP:
    // $str è una ipotetica variabile che contiene testi
    // passati da una form
         
    $str $_POST['str'];
    // elimino eventuali spazi ad inizio e fine stringa
         
    $str trim($str);
    // eliminio eventuali slash messi da php (dipende 
    // dalle impostazioni e dalla versione) 
        
    $str stripslashes($str);
    // recupero una lista di aratteri da sostituire
        
    $caratteri get_html_translation_table(HTML_ENTITIESENT_QUOTES);
    // sostituisco questi caratteri all'interno della mia stringa
        
    $str strtr($str$caratteri);    
    // faccio l'escape di tutti i caratteri "pericolosi" 
    // prima della INSERT nel DB
        
    $str mysql_real_escape_string($str); 
    Ti ripeto, io la funzione nl2br() la userei solo in fase di output dei testi e solo per una migliore comprensibilità del testo in fase di layout.

    Per i controlli sui numeri puoi usare la funzione is_numeric.

    Codice PHP:
     $num $_POST['num'];

    if (!
    is_numeric($num)) {
    // $num non è un numero
    } else {
    // $num è un numero

    Con questi metodi ti garantisci un buon controllo sugli input, per quanto dovresti sempre implementare delle regexp se volessi fare dei controlli ancora migliori.

    La questione degli apici è semplice: in un campo di input non filtrato, un apice potrebbe essere un buon metodo per veicolare un attacco di tipo SQL INJECTION (ad esempio).
    Per essere sicuri che questo non vada in porto, basterebbe andare a fare l'escape degli apici, al fine di trasformarli in una stringa semplice e quindi renderli innocui.

    Un ultima cosa: io ti ho scritto questi controlli in procedurale perché mi andava solo di mostrarti dei metodi di lavoro.
    Mettere tutti questi controlli in funzioni sarà il tuo prossimo obiettivo, al fine di avere poco codice e completamente riciclabile.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #13
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    grazie alcio74,
    mmi guarderò bene il tuo post, farò delle prove e vedo se ci salto fuori. ti chiedo però in che modo implementeresti il n2lbr solo come output. da ciò che ho capito dovrei inserire qualcosa nella select che estrapola i dati dal db, ma fatico a capire cosa. In che modo posso dirgli che i tag br devono essere trasformati in a capo?
    grazie ancora
    Si fanno sempre nuove scoperte

  4. #14
    Intendevo una cosa del genere.

    Codice PHP:
    // pagina pagina_di_visualizzazione_articolo.php

    $sql "SELECT titolo, descrizione FROM tabella WHERE id = $id";

    $query mysql_query($sql);
    $fetch mysql_fetch_array($query);

    $titolo $fetch['titolo'];
    $descrizione $fetch['descrizione'];

    mysql_free_result($query);

    $titolo nl2br($titolo); // se prevedi che il titolo possa essere su + righe
    $descrizione nl2br($descrizione);

    echo 
    "
    Titolo: 
    $titolo

    Descrizione: 
    $descrizione
    "

    Chiaro???
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #15
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    si, sei stato molto chiaro e gentile. ma io ho il codice fatto così, e ti garantisco che per me che ho cominciato 3 settimane fa col php è stata dura impararlo e scriverlo a sto modo:
    Codice PHP:
    $circolari_corsi mysql_query("SELECT titolo, descrizione, allegato, allegato2, allegato3 FROM circolari ORDER by data_inserimento desc");
                                while (
    $row=mysql_fetch_array($circolari_corsi))
                                {
                                    echo 
    '<h4>'.$row['titolo'].'</h4>';
                                    echo 
    '

    '
    .nl2br.$row['descrizione'];
                                    echo 
    '[url="circolari/'.$row['allegato'].'"]Link >>>[/url]'.'</p>';
                                    if(
    $row['allegato2'] != '') {
                                    echo 
    '

    '
    .'[url="circolari/'.$row['allegato2'].'"]Link 2 >>>[/url]'.'</p>';
                                    }
                                    if(
    $row['allegato3'] != '') {
                                    echo 
    '

    '
    .'[url="circolari/'.$row['allegato3'].'"]Link 3 >>>[/url]'.'</p>';
                                    }
                                } 
    ho provato a capire come implementare i tuoi suggerimenti con il mio codice, ma ricevo solo errori, è possibile farlo o devo scrivere il codice come hai fatto tu? sarebbe dura....
    grazie
    Si fanno sempre nuove scoperte

  6. #16
    Beh... questa è la query dei corsi, per cui stiamo parlando dell'estrapolazione dei dati dal DB, per cui devi implementare solo la seconda parte del codice che ti ho suggerito io (intendo quindi, quella che non prevede la validazione degli input).

    Per questa porzione di codice, hai poco da cambiare.

    Io lo farei così:
    Codice PHP:
    $sql "SELECT titolo, descrizione, allegato, allegato2, allegato3 FROM circolari ORDER by data_inserimento desc"
    $circolari_corsi mysql_query($sql); 

    while (
    $row=mysql_fetch_array($circolari_corsi)) { 

    $titolo $row['titolo'];
    $descrizione $row['descrizione'];
    $allegato $row['allegato'];
    $allegato2 $row['allegato2'];
    $allegato3 $row['allegato3'];

    echo 
    "
    <h4>
    $titolo</h4>


    "
    .nl2br($descrizione)."
    <a href=\"circolari/
    $allegato\" title=\"Continua a leggere\">Link >>></a> 
    </p>
    "


    if(
    $allegato2 != "") { 
     echo 
    "



    <a href=\"circolari/
    $allegato2\" title=\"Link 2\">Link 2 >>></a>
    </p>
    "




    if(
    $allegato3 != "") { 
    echo 
    "



    <a href=\"circolari/
    $allegato3\" title=\"Link 3\">Link 3 >>></a>
    </p>
    "


    // chiusura WHILE 
    Come puoi notare, ti ho riscritto un po' di cose.
    1) Ho creato la stringa $sql per separarla dalla funzione che la esegue. Questo solo per una questione di leggibilità del codice.
    2) Nel ciclo di WHILE ho creato delle variabili da associare ai parametri trovati di volta in volta dalla query in ogni singolo record.
    Questo per comodità: è più facile inserire una variabile in una echo piuttosto che stare a chiudere l'apice e ad aggiungere il carattere di concatenazione delle stringhe (il punto), e quindi mettere il $row['xxx']. C'è maggiore probabilità di errore.
    3) Peraltro, proprio per permettere di stampare le variabili nelle echo, ho sostituito gli apici singoli con i doppi apici. Con questo metodo, non hai necessità di aprire e chiudere decine di echo, te ne basta una, ma devi fare un minimo di attenzione a parsare gli apici (in poche parole a scrivere \" e \').
    4) La sintassi del nl2br() era sbagliata, l'ho corretta.
    5) Gli errori che avevi erano probabilmente di parsing. Nei tag <a href... non avevi mai parsato gli apici, per cui avevi di sicuro delle chiusure non volute delle strinnghe.

    Solo un ultima annotazione per i post futuri.
    Se da uno script ottieni degli errori, impara a riportarli sempre nel forum: permetterai a chi ti risponde di andare a restringere la ricerca sulle cause di quel messaggio.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  7. #17
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    grazie, sei stato molto esplicativo. sono riuscito!
    ti chiedo: avessi altri controlli potrei metterli a fianco del n2lbr con un punto? o dovrei implementare la cosa in maniera diversa?
    grazie...
    Si fanno sempre nuove scoperte

  8. #18
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    2) Nel ciclo di WHILE ho creato delle variabili da associare ai parametri trovati di volta in volta dalla query in ogni singolo record.
    Questo per comodità: è più facile inserire una variabile in una echo piuttosto che stare a chiudere l'apice e ad aggiungere il carattere di concatenazione delle stringhe (il punto), e quindi mettere il $row['xxx']. C'è maggiore probabilità di errore.
    A dire il vero questa è una questione di abitudine, io preferisco concatenare, ne risulta un codice più pulito (per quanto mi riguarda), e poi non ti devi preoccupare di fare l'escape degli apici dell'html (anche se poi io non scrivo mai html da php).

    ciao

  9. #19
    Per gianiaz.
    Si infatti io per abitudine scrivo così.... non intendevo dire che il mio sia IL metodo definitivo.
    Il discorso è che in un post precedente, avevo notato che Gabar-El aveva scritto male il modo per concatenare delle stringhe, per cui ho pensato di suggerirgli un metodo alternativo.

    Per gabar-el.
    Cosa intendi con....
    avessi altri controlli potrei metterli a fianco del n2lbr con un punto? o dovrei implementare la cosa in maniera diversa?
    .

    Spiegami cosa intendi con altri controlli.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  10. #20
    Utente di HTML.it L'avatar di gabar-el
    Registrato dal
    Jun 2006
    Messaggi
    2,222
    mmhhh.... non saprei, magari non c'entra nulla, ma ipotizzavo ulteriori controlli tipo htmlentities e chiedevo se si poteva mettere li a fianco, ma magari dico una cavolata....
    Si fanno sempre nuove scoperte

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.