è 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 mysqlOriginariamente inviato da Tremisfero
Ottengo "Resource id #4".
Che mi sembra strano anche perchè non corrisponde a nessun valore del database.
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 SQLTi 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.
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