Originariamente inviato da Tremisfero
Ottengo "Resource id #4".
Che mi sembra strano anche perchè non corrisponde a nessun valore del database.
è perfettamente normale che il var dump restituisca quel valore perché "result" non è il contenuto della query ma una risorsa che serve a identificare il contenuto della query e va usata con le funzioni di estrazioni o simili dell'estensione di mysql

Ti andrebbe di spiegarmi come posso rendere più sicuro il codice? E' una attivazione di account via email. nell'email c'è l'url che contiene i dati utili all'attivazione dell'utente.
beh, diciamo che ora come ora tutto dipende dal provider: inserendo $email così, senza effettuare controlli e effettuare l'escape del testo, se il provider, l'ISP, ha il magic_quote_gpc su off, quindi non effettua lui l'escape, ti succede un gran patacrac ... ovvero $email può essere modificato per contenere un pezzo di una query SQL

Se il campo email conterrebbe ad esempio
' OR 0 UNION ALL SELECT username,password..... FROM utenti WHERE '1' = '1

La query diventerebbe da
SELECT * FROM tabella WHERE email='$email'

A
SELECT * FROM tabella WHERE email='' OR 0 UNION ALL SELECT username,password..... FROM utenti WHERE '1' = '1'

La seconda select deve contenenre un numero di campi corrispondente a quelli presenti nella prima tabella, ma come vedi si potrebberò andare ad estrarre un altro tipo di dati

Ovviamente dipende dal tipo di pagina: se fai solo dei controlli interni per vedere se l'email è già attivata o è da attivare, alla fin fine non servirà a molto però comunque è un potenziale problema molto pericolo!

Dai un occhio a
www.php.net/mysql_escape_string

o
www.php.net/mysql_real_escape_string

e
www.php.net/stripslashes

e
www.php.net/addslashes

Inoltre dovresti anche dare un occhio a
www.php.net/get_magic_quotes_gpc

Perché prima di lanciare l'escape dovresti togliere gli apici tramite stripslashes se l'ISP ha configurato php per farli mettere in auto