Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    Se il record non esiste non deve aprire niente

    Vorrei fare un controllo su un record, per esempio se un record ha come id 3,4,5,6 ecc ed e' presente nel database apre la pagina, altrimenti se mettono l'id 7 e nel db non ho ancora niente con quel numero allora deve aprire una pagina di errore.

    Questo per evitare che qualcuno possa scrivere qualcosa nell'url e fare qualche "danno".

    I dati vengono passati con il get e non con il post.
    Cosa mi consigliate di fare?

  2. #2
    Fai una select per quell'id e verifichi il numero di righe estratte oppure utilizzi una count.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    Passi il valore tramite $_REQUEST['id'];

    Verifichi che sia un numero con la funzione is_numeric(), altrimenti rimuovi il valore
    Codice PHP:
    if ( !is_numeric($_REQUEST['id']) ) $_REQUEST['id'] = '' 
    Poi verifichi se non viene estratto niente dal database e se ciò succede visualizzi un messaggio di informazione non trovata.
    Un redirect ad una pagina di errore mi sembra anche troppo.

    Codice PHP:
    $risultato mysql_query("SELECT * FROM tua_yabella WHERE id = '".$_REQUEST['id']."' LIMIT 1 ")  ;
    if ( !
    $risultato || mysql_num_rows($risultato) != '1' ) echo 'Informazione non trovata' ;
    else {
    $dati mysql_fetch_array($risultato) ;
    ...
    etc.

    Errare humanum est, perseverare ovest

  4. #4
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    infatti ho provato con mysql numb rows ma se nell'url inserisco simboli tipo or "" if ecc il campo passa lo stesso, con quel is numeric non passa e credo sia la soluzione migliore...

    EDIT: alla fine li sto usando entrambi, faccio il controllo se l'id e' numerico, e faccio il controllo sulle righe, se esce qualcosa faccio vedere la pagina altrimenti l'errore, credo che sia un buon sistema di sicurezza o anche in questo caso un hacker potrebbe fare qualcosa?

  5. #5
    Dai anche un'occhiata alla funzione mysql_real_escape_string()
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    Comunque un hacker se facesse qualcosa non creerebbe danni
    i cattivi sono i crackers

    Così facendo sei tranquillo in fondo è una SELECT, se proprio vuoi esagerare usa nella query anche mysql_escape_string()

    Errare humanum est, perseverare ovest

  7. #7
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,743
    Originariamente inviato da satifal
    Dai anche un'occhiata alla funzione mysql_real_escape_string()
    si meglio
    Errare humanum est, perseverare ovest

  8. #8
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Originariamente inviato da satifal
    Dai anche un'occhiata alla funzione mysql_real_escape_string()
    sto controllando, ma non capisco molto bene di che si tratta...
    qui mi fa il controllo su user e pass io dovrei farlo sull'id?
    Ma a cosa serve?
    Gia' adesso se provo a mettere al posto del numero nell'url uno tra \x00, \n, \r, \, ', " and \x1a. mi da la pagina di errore...

  9. #9
    Originariamente inviato da allin81
    sto controllando, ma non capisco molto bene di che si tratta...
    qui mi fa il controllo su user e pass io dovrei farlo sull'id?
    Guarda che quelli sono solo esempi puoi applicarlo a qualsiasi campo
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  10. #10
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    si infatti l'ho aggiunto alla select, ma non capisco la differenza visto che prima anche non mi apriva link con quei caratteri

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 © 2024 vBulletin Solutions, Inc. All rights reserved.