La parte 1 potrebbe essere abbastanza semplice:'a''b'
è un'alternativa per 'a\'b'
e quindi significa lo stesso. L'interfaccia utente è sicura che nelle query verrà restituita la stringa corretta, al contrario della definizione della tabella.
Per la parte 2, Nedret Recep ti ha dato la risposta corretta. Inoltre, mi chiedo come
echo "<option value='".$imgClass_row[imgClass]."'>"
potrebbe mai risultare in
<option value="Robin" s'="">
. Preferirei aspettarmi
<option value='Robin's'="">
che è chiaramente sbagliato, ma può essere risolto con htmlspecialchars()
.
EDIT:ho trovato una possibile spiegazione:il parser HTML del browser potrebbe essere da biasimare qui. Con
<select id="s" onchange="alert(document.getElementById('s').innerHTML + ' value:' + document.getElementById('s').value)">
<option value='Robin's'>a</option>
<option value='Robin's'>b</option>
</select>
Ottengo con Firefox
<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin's
con l'opzione a
e
<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin
con l'opzione b
. Ma è dopo l'analisi e il rimontaggio e chiaramente non è il codice generato da PHP. E anche allora, dov'è en axcess '
in <option value="Robin" s'="">
.