sto ottenendo questo:L'array di recupero MySQL aggiunge valori duplicati?
Array
(
[0] => 1
[id] => 1
[1] => 778613c4344dbc9565c359c1154c6a18
[session] => 778613c4344dbc9565c359c1154c6a18
[2] => fn
[first_name] => fn
[3] => ln
[last_name] => ln
[4] => un
[username] => un
[5] => 016e6128e8ca9dda1b310c364d9b622c
[password] => 016e6128e8ca9dda1b310c364d9b622c
[6] => address
[email] => address
[7] => 100
[permission] => 100
[8] => 10
[year_level] => 10
[9] =>
[department] =>
[10] => Sample
[campus] => Sample
[11] => 0
[logo_url] => 0
)
Dopo aver eseguito questo
$user = mysql_fetch_array(mysql_query("SELECT session FROM users WHERE username='$cookie[username]' AND first_name='$cookie[first_name]' AND last_name='$cookie[last_name]' AND campus='$cookie[campus]' AND id='$cookie[id]'"))
Tutte le idee perché esso è la duplicazione di come questo? Grazie
EDIT: Penso che la chiave primaria stia facendo questo. Qualche idea su come fermarlo?
-1 per ripetere vecchie sciocchezze. l'escape non ha nulla a che fare con le Iniezioni SQL, ma i "valori" di fuga irrispettosi renderanno possibile l'iniezione. –
Bene, assicurandosi che i dati iniettati nelle query SQL siano * sicuri * ha a che fare con le Iniezioni SQL; e sfuggire a stringhe è un modo per assicurarsi che siano * sicuri *; Tuttavia, ammetto che avrei potuto aggiungere che la stessa idea dovrebbe essere applicata per i valori non stringa, come gli interi * (assicurandoci che contengano davvero interi, con 'intval()' per esempio) * –
di nuovo un'illusione. l'escaping non rende i dati * "sicuri" *. è semplicemente una formattazione. E sicuramente devi usarlo (per le stringhe) non per sicurezza, ma solo per mantenere il tuo SQL coerente.Integers non è un caso isolato, l'identificatore è un altro esempio di completa e totale inutilità di escape che avrebbe dovuto rendere i "valori" "sicuri" –