- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > Tutorials
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


Tutorials In diesem Forum könnt Ihr euere Fragen zu unseren Tutorials stellen. Die Tutorials sind unter http://www.php-resource.de/tutorials/ zu finden. Tutorialgesuche bitte im Forum Off-Topic stellen!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #31 (permalink)  
Alt 12-05-2009, 22:38
sebbb
 Registrierter Benutzer
Links : Onlinestatus : sebbb ist offline
Registriert seit: May 2009
Beiträge: 7
sebbb befindet sich auf einem aufstrebenden Ast
Standard

ok, nächster versuch:

PHP-Code:
<?php
    
echo '
        <form method="post" action="register.php">
        Benutzername:<br /><input name="username" type="text"><br>
        Passwort:<br /><input name="userpass" type="password" id="userpass"></p>
        Passwort wiederholen:<br /><input name="userpass2" type="password" id="userpass2"></p>
        E-Mail:<br /><input name="usermail" type="text" id="usermail"></p>
        <input name="register" type="submit" value="Benutzer anlegen">
    </form>
    '
;
  if(!isset(
$_POST['username']) || $_POST['username'] == ""){
    echo 
'Bitte einen Benutzernamen angeben!';}
  if(!isset(
$_POST['usermail']) || $_POST['usermail'] == ""){
    echo 
'Bitte eine E-Mailadresse angeben!';}
  if(!isset(
$_POST['userpass']) || $_POST['userpass'] == ""){
    echo 
'Bitte ein Passwort angeben!';}
  if(
$_POST['userpass'] != $_POST['userpass2']){
    echo 
'Passwörter stimmen nicht überein!';}
  else{
    
gucken ob username noch frei ist
    dann in datenbank schreiben
    dann entweder Erfolg
!
    
oder Es trat ein Fehler auf!
    }
?>
Das ist der Code. Das Problem ist dieser Teil:

PHP-Code:
else{
     
gucken ob username noch frei ist
     dann in datenbank schreiben
     dann entweder Erfolg
!
     
oder Es trat ein Fehler auf!
     } 
Keine Ahnung wie das gehn soll.
Mit Zitat antworten
  #32 (permalink)  
Alt 12-05-2009, 23:04
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

gucken ob username noch frei ist -> SELECT und schauen ob es einen Treffer gibt.
in datenbank schreiben -> INSERT
dann entweder Erfolg! -> wenn INSERT geklappt hat
oder Es trat ein Fehler auf! -> wenn INSERT nicht geklappt hat

Falls die Spalte mit den Usernamen unique ist, kannst du auf das SELECT verzichten. Das INSERT wird fehlschlagen, wenn der Username schon vergeben ist (wegen uniqueness kann der selbe Name nicht nochmal eingefügt werden).
Mit Zitat antworten
  #33 (permalink)  
Alt 12-05-2009, 23:15
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.486
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sebbb Beitrag anzeigen
PHP-Code:
else{
     
gucken ob username noch frei ist
     dann in datenbank schreiben
     dann entweder Erfolg
!
     
oder Es trat ein Fehler auf!
     } 
Keine Ahnung wie das gehn soll.
Kucken, ob der Username noch frei ist - könnte man mit einem SELECT machen. Fragen, ob ein Datensatz mit username = eingabe existiert, Ergebnis auswerten.
Geht allerdings auch einfacher - in dem man die Spalte in der DB-Tabelle gleich als unique definiert. Dann schlägt der INSERT einfach fehl, wenn es schon einen Datensatz mit diesem Namen gibt - und auch diese Ursache findet man heraus, in dem man den Fehlercode analysiert, dann kann man dem Nutzer entsprechende Rückmeldung geben.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #34 (permalink)  
Alt 13-05-2009, 20:26
sebbb
 Registrierter Benutzer
Links : Onlinestatus : sebbb ist offline
Registriert seit: May 2009
Beiträge: 7
sebbb befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Hilfe. Meint ihr etwas in der Art?

PHP-Code:
  else{
         
$username $_POST['username'];
      
$userpass md5($_POST['userpass']);
      
$usermail $_POST['usermail'];
      if(
$insert = @mysql_query("INSERT INTO USERS SET UserName = '$username', UserPass = '$userpass', UserMail = '$usermail'")) {
        echo 
'Erfolg!';}
      else{
        echo 
'Fehler!';}
    } 
Wenn ichs versuch sagt er "Fehler". Die Spalte ist aber unique.
Mit Zitat antworten
  #35 (permalink)  
Alt 13-05-2009, 20:29
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.104
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Stichwort: SQL-Injection
Mit Zitat antworten
  #36 (permalink)  
Alt 13-05-2009, 20:31
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.486
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Das @ raus, Kontrollausgabe des generierten Query-Strings machen, und vor allem, mysql_error nutzen.

Sowas steht übrigens auch in guten Grundlagen-Tutorials - also solltest du deine Weigerung, ein solches mal durchzuarbeiten, wohl mal aufgeben.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #37 (permalink)  
Alt 13-05-2009, 21:55
sebbb
 Registrierter Benutzer
Links : Onlinestatus : sebbb ist offline
Registriert seit: May 2009
Beiträge: 7
sebbb befindet sich auf einem aufstrebenden Ast
Standard

Ok, vielen Dank. Jetzt klappts. Das @ war zu viel.

Ich hab aber noch eine Frage: Bei meiner gesicherten Seite benutze ich folgendes:

PHP-Code:
if (!logged_in())
    echo 
'<meta http-equiv="refresh" content="0; URL=login.php">' 
Wenn man diese Seite direkt über die URL aufruft und nicht eingeloggt ist, wird man zwar weitergeleitet aber erst nach kurzem Warten, so dass man schon einen Blick auf die Seite werfen kann.
header("location:") kann ich nicht benutzen, weil die sessionhelpers.inc.php schon die Headerangaben gesendet hat.

Gibt es noch eine andere Möglichkeit um auf die Login-Seite zu linken falls man nicht eingeloggt ist?

Geändert von sebbb (13-05-2009 um 22:04 Uhr)
Mit Zitat antworten
  #38 (permalink)  
Alt 13-05-2009, 23:44
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 24.486
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von sebbb Beitrag anzeigen
Wenn man diese Seite direkt über die URL aufruft und nicht eingeloggt ist, wird man zwar weitergeleitet aber erst nach kurzem Warten, so dass man schon einen Blick auf die Seite werfen kann.
Dann gebe "die Seite" in so einem Falle nicht aus.

Zitat:
Gibt es noch eine andere Möglichkeit um auf die Login-Seite zu linken falls man nicht eingeloggt ist?
Wozu überhaupt weiterleiten?

Das Loginformular kann an der Stelle angezeigt werden, an der sich der Nutzer gerade befindet.

if(!eingeloggt) {
// login-formular ausgeben
}
else {
// seiteninhalt
}

Natürlich muss der Rest der Seite nicht komplett per PHP ausgegeben werden - zum einen gibt es die Möglichkeit, den PHP-Bereich zu verlassen, und zum anderen täte es auch ein Beenden des Scriptes nach der Ausgabe des Formulars.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #39 (permalink)  
Alt 14-05-2009, 10:44
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 2.925
combie befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
header("location:") kann ich nicht benutzen, weil die sessionhelpers.inc.php schon die Headerangaben gesendet hat.
Das ist doch Unsinn!
Wieso sollten SessionHeader eine Weiterleitung verhinden?


Die Sorgen liegen ehr an sowas:
Zitat:
PHP-Code:
<?php
    
echo '
        <form method="post" action="register.php">
        Benutzername:<br /><input name="username" type="text"><br>
        Passwort:<br /><input name="userpass" type="password" id="userpass"></p>
        Passwort wiederholen:<br /><input name="userpass2" type="password" id="userpass2"></p>
        E-Mail:<br /><input name="usermail" type="text" id="usermail"></p>
        <input name="register" type="submit" value="Benutzer anlegen">
    </form>
    '
;
  if(!isset(
$_POST['username']) || $_POST['username'] == ""){
    echo 
'Bitte einen Benutzernamen angeben!';}
  if(!isset(
$_POST['usermail']) || $_POST['usermail'] == ""){
    echo 
'Bitte eine E-Mailadresse angeben!';}
  if(!isset(
$_POST['userpass']) || $_POST['userpass'] == ""){
    echo 
'Bitte ein Passwort angeben!';}
  if(
$_POST['userpass'] != $_POST['userpass2']){
    echo 
'Passwörter stimmen nicht überein!';}
  else{
    
gucken ob username noch frei ist
    dann in datenbank schreiben
    dann entweder Erfolg
!
    
oder Es trat ein Fehler auf!
    }
?>
Ein ganz klarer Verstoß gegen das EVA Prinzip!!
V und A vertauscht.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #40 (permalink)  
Alt 14-05-2009, 15:15
sebbb
 Registrierter Benutzer
Links : Onlinestatus : sebbb ist offline
Registriert seit: May 2009
Beiträge: 7
sebbb befindet sich auf einem aufstrebenden Ast
Standard

Auf die Idee bin ich gar nicht gekommen. Jetzt ist es auf jeden Fall besser. Danke!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

EM 2012 Tipp-Spiel ansehen EM 2012 Tipp-Spiel

Online Tipp-Spiel zur Fussball Europameisterschaft 2012, basierend auf php-Script mit hinterlegter mySql-Datenbank

27.05.2012 tippimnetz | Kategorie: PHP/ Spiele
Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:19 Uhr.