ThWboard Support-Forum (Archiv)

Ort: / Boardübersicht / PHP / MySQL Probleme / Gross/kleinschreibung


Seite 1 von 1

Heiner schrieb am 08.04.2003 um 19:20 Uhr

Hallo,

im Forum ist ja egal ob ich beim Einloggen den Usernamen
gross oder klein schreibe, liegt wohl daran das der Name
in einer Datenbank liegt?

Jetzt habe ich ein Script, wo der Username nicht in einer Datenbank
liegt, sondern in einem Verzeichnis als Datei und dort ist es wichtig,
beim Einloggen exact den Namen wie bei der Registrierung einzugeben.

Kann man das ändern, so das man egal ob gross- oder kleinschreibung
keine Fehlermeldung bekommt?

Superhausi schrieb am 08.04.2003 um 22:52 Uhr

Files werden klein gespeichert und dann beim Username mit strtolower darübergehen :)

Heiner schrieb am 09.04.2003 um 08:25 Uhr

Also bereits beim Abspeichern mit strtolower ´rübergehen und
beim Vergleich nochmal?

Es sollte allerdings so sein, dass die Usernamen angezeigt werden
wie ehemals bei der Anmeldung eingegeben.

z.B.
Anmeldung mit UserName.

Keine Fehlermeldung beim Einloggen mit username oder Username,
Anzeige dann trotzdem UserName.

Jonas schrieb am 09.04.2003 um 12:28 Uhr

usernames normal abspeichern, eingegebenen und gespeicherten mit strtolower checken

Heiner schrieb am 29.06.2003 um 19:45 Uhr

Hallo,
habe das noch nicht hinbekommen, kann da noch mal jemand nachhelfen?

Der User hat sich bereits mit z.B. 'Hans' registriert. Es wurde eine
'users/Hans.php' angelegt.
Jetzt will er sich einloggen, das Eingabefeld im Formular heisst $username.

Jetzt wird nur nachgeschaut ob der Name existiert, jedoch
wird auf Gross- und Kleinschreibung geachtet, was ich jedoch
nicht möchte.(bei Eingabe 'hans' wird gemeckert, User existiert nicht').

if (file_exists("users/$username.php")):
include("users/$username.php");
else:
echo "<font color=$color><B>Fehler!</b></font>
        <P>Der Username scheint nicht zu existieren.
        <p>Bitte <a href=\"index.php\">nochmal versuchen</a> oder <a href=\"register.php\">registriere</a> einen Namen.";

Narodnaja schrieb am 29.06.2003 um 22:08 Uhr

setz einfach davor:

$username = strtolower($username);

und verwende für die Files nur Kleinbuchstaben, ist eh zu empfehlen.
Oder hast du vorher noch irgend eine Prüfung drin, einen DB-Query zb ?

Heiner schrieb am 30.06.2003 um 05:07 Uhr

Hallo,
die Namen werden in ein Verzeichnis gespeichert, ist
alles ohne Datenbank.
Hintergrund ist, das einige User sich mehrfach im Chat
anmelden, wenn sie sich nicht mit der korrekten Schreibweise
(Gross/Klein) einloggen, ich bekomme dann öfter eine Mitteilung,
warum es das Profil nicht mehr gibt, dabei haben sie eben nur
die Gross- und Kleinschreibung nicht beachtet.

Wäre natürlich am einfachsten die Namen alle klein abzuspeichern,
wollte das jedoch eigentlich vermeiden, da das auch einige
wieder nicht gut finden.

Jonas schrieb: usernames normal abspeichern, eingegebenen und
gespeicherten mit strtolower checken.

Das habe ich bisher 1 zu 1 noch nicht umsetzen können.

Narodnaja schrieb am 30.06.2003 um 09:32 Uhr

Hmm. Dann müsstest du erstmal das Verzeichnis einlesen, damit du die Verzeichnisnamen auch strtolowern kannst.

Mir fällt dazu nur ein:

$a_filename = array();
$verz=opendir ('deinverzeichnis');

while ($file = readdir ($verz)) 
{
    if ($file != "." && $file != "..") 
    {
        $file_split = explode(".",$file);
        $file_split[0] = strtolower($file_split[0]);
        $a_filename[] = $file_split[0];
    }
}

closedir($verz);

Damit solltest du alle Dateinamen in das array $a_filename bringen, nachdem du
- erst die Dateien ausgeschlossen hast, die nicht reinsollen (mit der if-Bedingung; . und .. werden mit ausgelesen => falls du noch Dateien in dem Verzeichnis hast, die nicht eingelesen werden sollen, einfach noch da rein),
- dann hast du die Namen aufgeteilt (index.php => index und php),
- dann über den ersten Teil ein strotolower und
- dann eben ans array angehängt hast.

Danach einfach eine Abfrage:

$username = strtolower($username);
if (!in_array($username, $a_filename))
{
// Fehlermeldung //
}
else
{
// alles in Ordnung //
}

ungetestet. Aber sollte klappen.

Heiner schrieb am 30.06.2003 um 16:40 Uhr

Herzlichen Dank, wenn ich das getestet habe melde ich mich wieder.

Heiner schrieb am 30.06.2003 um 21:12 Uhr

Hallo,
hat vom Prinzip her funktioniert, jedoch ist der ursprüngliche
$username nicht mehr original, da ja strtolower.
Und das Script geht noch weiter, wo der ürsprüngliche
gebraucht wird.
Habe es den username jetzt 1. in Kleinbuchstaben und 2. den
ersten Buchstaben gross (ucfirst), ist ein brauchbarer Kompromiss.

Trotzdem vielen Dank.

Seite 1 von 1