If-Else-Abfragen mit SQL
Hallo,
ich bin dabei ein "kleiners" Skript zu basteln.
Mit dem Skript soll ein benutzername und passwort in eine mysql-datenbank eingetragen werden.
jetzt soll es aber so sein, dass wenn ein Benutzername schon vorhanden ist, er dies auch anzeigen soll.
also jetzt zeigt er mir nichts mehr an.
hoffe, ihr wisst es^^
ich bin dabei ein "kleiners" Skript zu basteln.
Mit dem Skript soll ein benutzername und passwort in eine mysql-datenbank eingetragen werden.
jetzt soll es aber so sein, dass wenn ein Benutzername schon vorhanden ist, er dies auch anzeigen soll.
also jetzt zeigt er mir nichts mehr an.
hoffe, ihr wisst es^^
<?php
if($_SESSION['id']=="")
{
echo "<h1>Bitte erst einloggen</h1><hr>Erst dann steht die gewünschte Funktion zur Verfügung.";
}
else
{
echo "<h1>Neuer Benutzer</h1><hr>
<br>";
include('config/inc_config.php');
if($_POST['post']) {
$benutzername = $HTTP_POST_VARS['benutzername'];
$passwort = $HTTP_POST_VARS['passwort'];
$einrichtungsname = $HTTP_POST_VARS['einrichtungsname'];
$strasse = $HTTP_POST_VARS['strasse'];
$hausnummer = $HTTP_POST_VARS['hausnummer'];
$plz = $HTTP_POST_VARS['plz'];
$stadt = $HTTP_POST_VARS['stadt'];
$vorwahl = $HTTP_POST_VARS['vorwahl'];
$telefon = $HTTP_POST_VARS['telefon'];
$fax = $HTTP_POST_VARS['fax'];
$mailadresse = $HTTP_POST_VARS['mailadresse'];
$status = $HTTP_POST_VARS['status'];
$mobil = $HTTP_POST_VARS['mobil'];
$anrede = $HTTP_POST_VARS['anrede'];
$vorname = $HTTP_POST_VARS['vorname'];
$nachname = $HTTP_POST_VARS['nachname'];
$position = $HTTP_POST_VARS['position'];
include('config/inc_config.php');
$anfrage='SELECT benutzername FROM benutzer WHERE benutzername like "$benutzername"';
$data = mysql_query($anfrage);
while($row = mysql_fetch_array($data))
{
if($benutzername==$row['benutzername'])
{
echo 'Benutzername existiert bereits.';
}
else
{
if($benutzername=="" OR $passwort=="" OR $einrichtungsname=="" OR $strasse=="" OR $hausnummer=="" OR $plz=="" OR $stadt=="" OR $vorwahl=="" OR $telefon=="" OR $mailadresse=="" OR $status=="" OR $anrede=="" OR $vorname=="" OR $nachname=="" OR $position=="")
{
echo 'Bitte die mit * gekennzeichneten Felder ausfüllen.';
}
else {
$sql = "INSERT INTO benutzer
(`benutzername`,`passwort`,`einrichtungsname`,`strasse`,`hausnummer`,`plz`,`stadt`,`vorwahl`,`telefon`,`mailadresse`,`status`,`anrede`,`vorname`,`nachname`,`position`,`fax`,`mobil`) VALUES ('$benutzername','$passwort','$einrichtungsname','$strasse','$hausnummer','$plz','$stadt','$vorwahl','$telefon','$mailadresse','$status','$anrede','$vorname','$nachname','$position','$fax','$mobil') ";
mysql_query($sql);
echo 'Neuer Benutzer wurde angelegt!';
};
}
}
}
else {
echo '
<form method=post action="">
<font size="2">
<table width="100%">
<tr>
<td>
<b>Benutzername: *</b>
</td>
<td>
<INPUT type="text" name="benutzername" value="vorname.nachname" size="19" maxlength=""><br>
</td>
</tr>
<tr>
<td>
<b>Passwort: *</b>
</td>
<td>
<INPUT type="password" name="passwort" value="" size="19" maxlength=""><br>
</td>
</tr>
//hier sind noch weitere sachen die eingetragen werden
<tr>
<td>
<INPUT type="submit" name="post" value="Anlegen">
</td>
</tr>
</table>
</font>
</form>
';
};
};
?>
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 98232
Url: https://administrator.de/contentid/98232
Ausgedruckt am: 26.11.2024 um 15:11 Uhr
5 Kommentare
Neuester Kommentar
Moin Stadt-Husum,
ich vermute mal, Du findest nie etwas mit diesem mehr als wackligen Statement...
Und dazu solltest Du die beiden "benutzernamen" entweder als UPPER() oder lower()-strings vergleichen.
[ungetestet]
Grüße
Biber
ich vermute mal, Du findest nie etwas mit diesem mehr als wackligen Statement...
$anfrage='SELECT benutzername FROM benutzer
WHERE benutzername like "$benutzername"';
- für ein LIKE fehlen die Wildcard-Zeichen--> geht in die Grütze
- aber Du meinst ja auch gar keine LIKE-Suche, sondern einen IST-EXAKT-GLEICH-Vergleich
Und dazu solltest Du die beiden "benutzernamen" entweder als UPPER() oder lower()-strings vergleichen.
$anfrage='SELECT benutzername FROM benutzer
WHERE UCASE(benutzername) = UCASE("$benutzername")';
Grüße
Biber
wie da ist ein like zu viel?
da ist doch nur eins...
da ist doch nur eins...
ok, ist wohl ein Anzeigeproblem im IE7... wenn die Zeile nach "Like" zungebrochen wird, steht das am Anfang der nächsten Zeile nochmal.
was sind SQL-Injections?
Wenn in diesem Code:
$sql = "INSERT INTO benutzer (`benutzername`,`passwort`,`einrichtungsname`,`strasse`,`hausnummer`,`plz`,`stadt`,`vorwahl`,`telefon`,`mailadresse`,`status`,`anrede`,`vorname`,`nachname`,`position`,`fax`,`mobil`) VALUES ('$benutzername','$passwort','$einrichtungsname','$strasse','$hausnummer','$plz','$stadt','$vorwahl','$telefon','$mailadresse','$status','$anrede','$vorname','$nachname','$position','$fax','$mobil') ";
mysql_query($sql);
'); DELETE FROM benutzer; --
Moin Stadt-Husum,
bitte versuche es noch mal mit dieser Schreibweise:
Mit UCase()/Upper() wandelst Du einen String in Grossbuchstaben um, mit Lcase()/Lower() in Kleinbuchstaben.
Würdest Du e nicht so machen hättest Du das ungewollte Feature, dass sich ein Benutzer "biber" neu anmelden könnte, obwohl es schon einen Benutzer "Biber" gibt.
Grüße
Biber
bitte versuche es noch mal mit dieser Schreibweise:
$anfrage="SELECT benutzername FROM benutzer
WHERE UCASEbenutzername = UCASE('".$benutzername."');"
Mit UCase()/Upper() wandelst Du einen String in Grossbuchstaben um, mit Lcase()/Lower() in Kleinbuchstaben.
Würdest Du e nicht so machen hättest Du das ungewollte Feature, dass sich ein Benutzer "biber" neu anmelden könnte, obwohl es schon einen Benutzer "Biber" gibt.
Grüße
Biber