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 https://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.471
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: 25.236
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.105
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: 25.236
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: 25.236
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: 3.296
combie wird schon bald berühmt werden
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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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