php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.10.2006, 17:25  
Erfahrener Benutzer
 
Registriert seit: 15.06.2005
Beiträge: 193
Zangelo
Standard Username überprüfen, so gut?

Hi,
ich möchte schauen, ob ein user schon vorhanden ist. ich würde es so machen, weis aber nicht, ob das so gut ist?

würde mich über eure meinung freuen, ist ja nicht viel code, wusst aber nicht, wie ich es lösen kann, und hab ein bisschen gemurkst.

PHP-Code:
//Ausgabe
while($row mysql_fetch_assoc($result)) {


         if (
$row['User'] == "$reg_user")
    {
        
$gebrauch 1;
     }

}


if(!isset(
$gebrauch)){
        
$gebrauch 0;
}


if(
$gebrauch == "1"){
    echo 
"Der Name wird schon benutzt
\n"
;
}else{
    echo 
"Registriert
\n"
;

__________________

www.das-forum.us Das Forum dazu
Zangelo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.10.2006, 17:42  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Es ist unnötig per PHP in einer Schleife zu prüfen ob es den user gibt - lass das doch die Datenbank erledigen.

Ergo: Statt alle User aus der Datenbank zu holen und mit einer Schleife zu durchlaufen fragst du schon in deinem SQL-Query nur die User mit dem Namen $reg_user ab. (WHERE user='xyz')....
__________________
Today you...Tomorrow me.
agrajag ist offline  
Alt 24.10.2006, 17:43  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

PHP-Code:
<?php
$sSQL 
sprintf("SELECT COUNT(*) FROM `users` WHERE `username` = %s"quoteSmart($_POST['username']));
$rResource mysql_query($sSQL) or die(mysql_error());
$bAlreadyExists = (bool)mysql_result($rResource,0);
if (
$bAlreadyExists) {
  echo 
"Der Name wird schon benutzt.
\n"

} else {
  
// Registrierung mit diesem Usernamen möglich.
}
?>
COUNT(*) zählt die Zeilen, die über das SELECT entstanden wären. Ergebnis ist eine Zahl zwischen 0 und n.
Durch die Konvertierung zu BOOL wird 0 zu FALSE und jede andere Zahl zu TRUE.

quoteSmart() ist eine Funktion, die du vorher erstellen musst, du findest sie hier:
http://de3.php.net/mysql_real_escape_string
Zergling-new ist offline  
Alt 25.10.2006, 09:29  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Alternativ kannst du die Spalte username auch mit einem UNIQUE-Index versehen, beim Eintragen das Schlüsselwort IGNORE angeben, so dass MySQL keinen Fehler erzeugt, wenn schon ein Eintrag für diesen Benutzernamen existiert und anschließend mit mysql_affected_rows() abfragen, ob ein Eintrag erstellt wurde.
xabbuh ist offline  
Alt 25.10.2006, 10:38  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Letzteres musst du ohnehin tun. Auch, wenn du vorher den Usernamen prüfst, kannst du ja nicht sicher sein, dasszwischen der Prüfung und dem Eintrag nicht doch jemand genau den Benutzernamen eingetragen hat. Hier helfen dir womöglich LOCKs[1].

[1] http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html

Zu deinem Code oben. Hier könnte man prinzipiell folgendes optimieren:

1. Anstatt $gebrauch auf 0 oder 1 zu setzen, nimmst du einen boolschen Wert true oder false.
2. Anstatt der Prüfung, ob $gebrauch gesetzt ist, setzt du einfach vor der Schleife einen Default-Wert.
3. Und, gut, sich gleich englischsprachige Beeichner anzugewöhnen:

PHP-Code:
$bUsernameExists false;

while(
$row mysql_fetch_assoc($result)) {


         if (
$row['User'] == "$reg_user")
    {
        
$bUsernameExists true;
     }

}

if(
bUsernameExists) {
    echo 
"Der Name wird schon benutzt
\n"
;
}else{
    echo 
"Registriert
\n"
;

Aber natürlich ist "Zergling"s Abfrage geschickter.

Basti
Basti ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nach Login mit Session Username auslesen DDogg PHP Tipps 2006 2 07.07.2006 15:42
[Erledigt] JOIN userid zu username Datenbanken 2 21.01.2006 18:50
PHP GET Username / Loginname PHP-Fortgeschrittene 44 07.09.2005 17:43
Username bei Benutzung von .htaccess abfragen Server, Hosting und Workstations 0 03.08.2005 17:50
[Erledigt] Username ausm Proxy auslesen PHP-Fortgeschrittene 3 31.05.2005 08:39
[Erledigt] Username und Passwort auslesen!?!? Fehler im scrippt?!? Datenbanken 6 18.05.2005 18:46
Was wenn username schon vorhanden? GELight PHP Tipps 2005 8 29.04.2005 09:45
username mit sessions in andere dateien übertragen Rotti PHP Tipps 2004-2 4 26.12.2004 12:01
Undefined index: USERNAME PHP Tipps 2004-2 2 07.12.2004 17:47
username immer behalten (variable $username geht verloren) PHP Tipps 2004-2 11 07.12.2004 11:25
0 bis 9 und A bis Z PHP Tipps 2004-2 7 17.11.2004 14:47
[Erledigt] username und passwort? Datenbanken 7 15.09.2004 00:19
überprüfen ob username schon vorhanden ist??? Promaetheus PHP Tipps 2004 3 27.08.2004 20:11
Username aus datei auslesen... PHP Tipps 2004 17 17.08.2004 15:00
MySQL ignoriert Username Datenbanken 9 16.08.2004 10:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
prüfung ob username in gebrauch ist php, gut usernamen, php username

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.