La partie 1 pourrait être assez simple :'a''b'
est une alternative pour 'a\'b'
et signifie donc la même chose. L'interface utilisateur est sûre que dans les requêtes, la chaîne correcte sera renvoyée, par opposition à la définition de la table.
Pour la partie 2, Nedret Recep vous a donné la bonne réponse. De plus, je me demande comment
echo "<option value='".$imgClass_row[imgClass]."'>"
pourrait jamais entraîner
<option value="Robin" s'="">
. Je m'attendrais plutôt
<option value='Robin's'="">
ce qui est clairement faux, mais peut être résolu avec htmlspecialchars()
.
EDIT :j'ai trouvé une explication possible :l'analyseur HTML du navigateur pourrait être à blâmer ici. Avec
<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>
Je reçois avec Firefox
<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin's
avec option a
et
<option value="Robin's">a</option>
<option value="Robin" s="">b</option>
value:Robin
avec option b
. Mais c'est après l'analyse et le réassemblage et ce n'est clairement pas le code généré par PHP. Et même alors, où est en axcess '
dans <option value="Robin" s'="">
.