Opened 7 years ago
Closed 7 years ago
#3419 closed Defekt (erledigt)
Eingabe der Schülernummer im Anmeldeformular schlägt fehl
| Reported by: | Rüdiger Kupper | Owned by: | bau |
|---|---|---|---|
| Priority: | unverzüglich erledigen | Milestone: | Schuljahr 2019/20 |
| Component: | Ich kenne die passende Komponente nicht. | Severity: | beeinträchtigt den Unterricht vieler Lehrer |
| Keywords: | Cc: |
Description (last modified by )
Wählt man die Option "Schülernummer" aus und gibt eine Nummer ein, erhält man beim Absenden des Formulars die Fehlermeldung:
Mysql-Abfragefehler [SELECT Rufname, Name FROM logindata WHERE Schülernummer=<Nummer>;] (1300/Invalid utf8 character string: 'Sch\xFClernr')
Offenbar machst Du eine SQL-Abfrage mit einem Feld namens "Schülernummer" und der Umlaut macht Probleme. Kannst Du danach schauen?
Change History (6)
comment:1 by , 7 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 7 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:3 by , 7 years ago
comment:4 by , 7 years ago
\xFC scheint der UTF-16-Code für "ü" zu sein.
Der UTF-8-Code müsste "\xc3\xbc" lauten.
comment:5 by , 7 years ago
Das Problem könnte mit der Codierung der Datei "index.php" zu tun haben:
# file index.php index.php: PHP script, ISO-8859 text
Die Datei ist im ISO-8859-Format, der SQL-Server erwartet aber offenbar UTF-8-Strings.
(Mensch, Jens, man verwendet doch keine Umlaute im Code!)
Vielleicht gelingt es mir, das umzucodieren.
comment:6 by , 7 years ago
| Resolution: | → erledigt |
|---|---|
| Status: | assigned → closed |
Gelöst: Ich habe in index.php die Zeile
$erg=$C->get1QueryResult("SELECT Rufname, Name FROM logindata WHERE Schülernr=".$C->escape($_POST["SGeschwister"])."\
;");
ersetzt durch
$erg=$C->get1QueryResult("SELECT Rufname, Name FROM logindata WHERE Sch\xc3\xbclernr=".$C->escape($_POST["SGeschwister"])."\
;");
Jetzt läuft die Abfrage durch.
Sicherheitstests:
- Schülernummer von baumgaert1 wird akzeptiert
- Schülernummer "9999999999999999999999999" liefert Fehlermeldung, das diese Nummer nicht existiert
- Kleines Problem: Man kann das Feld Schülernummer leer lassen, ohne eine Fehlermeldung zu erhalten. Laut Deinem Code müsste es sich da einfach beschweren. Da bastele ich jetzt aber nicht dran rum.
Das Feld in der Datenbank
logindataheißt tatsächlich "Schülernummer" mit "ü" – ziemlich gefährlich …