tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
23
ZUGRIFFE
900
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    TribunM TribunM ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    177
    Guten Abend,

    ich kann ja Vieles aber wenn ich eines mal gar nicht kann, dann ist es php .
    Ich probiere seid Stunden rum und habe es wenigstens mal annähernd geschafft nen Anmeldescript hinzubekommen, das oh wunder auch weitestgehend funktioniert .
    Ok ich gebe lieber zu, dass es mehr die Arbeit von Dreamweaver war, als von mir . Unten das verwendete script:
    PHP-Code:
    <?php require_once('Connections/db37926_news.php'); 

    // *** Validate request to login to this site.
    session_start();

    $loginFormAction $_SERVER['PHP_SELF'];
    if (isset(
    $accesscheck)) {
      
    $GLOBALS['PrevUrl'] = $accesscheck;
      
    session_register('PrevUrl');
    }


    if (isset(
    $_POST['email'])) {
      
    $loginUsername=$_POST['email'];
      
    $password=$_POST['password'];
      
    $MM_fldUserAuthorization "";
      
    $MM_redirectLoginSuccess "home.php";
      
    $MM_redirecttoReferrer false;
      
    mysql_select_db($database_db37926_news$db37926_news);
      
      
    $LoginRS__query=sprintf("SELECT email, password FROM phplist_en_user WHERE email='%s' AND password='%s'",
        
    get_magic_quotes_gpc() ? $loginUsername addslashes($loginUsername), get_magic_quotes_gpc() ? $password addslashes($password)); 
       
      
    $LoginRS mysql_query($LoginRS__query$db37926_news) or die(mysql_error());
      
    $loginFoundUser mysql_num_rows($LoginRS);
      if (
    $loginFoundUser) {
         
    $loginStrGroup "";
        
        
    //declare two session variables and assign them
        
    $GLOBALS['MM_Username'] = $loginUsername;
        
    $GLOBALS['MM_UserGroup'] = $loginStrGroup;          

        
    //register the session variables
        
    session_register("MM_Username");
        
    session_register("MM_UserGroup");


        if (isset(
    $_SESSION['PrevUrl']) && false) {
          
    $MM_redirectLoginSuccess $_SESSION['PrevUrl'];    
        }
        
    header("Location: " $MM_redirectLoginSuccess );
      }
      else {
        echo 
    "Das Passwort oder die E-Mail ist nicht korrekt!";
      }
    }
    ?>

    <form method=POST action="<?php echo $loginFormAction?>" name="subscribeform">


    <table width="600" border="0" align="center" cellpadding="2" cellspacing="2">
    Bitte E-Mail und Passwort angeben<br>
    <!-- E-mail -->
    <tr valign="top" height="20"><td width="290" align="right" class="Normalbold">
    <b>E-mail: </b> </td>
    <td width="296"><input type="text" name="email" size="40" value="" ></td>
    </tr>

    <!-- E-mail confirmation-->
    <tr valign="top" height="20">
    <td width="290" align="right" class="Normalbold">
    <p><b>Passwort: </b> </p>
    <p><br />
    </p></td>
    <td><input type="password" name="password" size="40" value="" > <span class="style26">*</span></td>
    </tr>
    </table>

    <input type=submit name="subscribe" value="Anmelden" onClick="return checkform();">

    </div>
    </form>
    </body>
    </html>
    Na ja er gibt jetzt ne Fehlernachricht aus wenn was falsch ist, was auch so gut ist, aber ich hätte die gerne z.b. unter die Zeile "Bitte E-Mail und Passwort angeben". Hab aber Null Ahnung wie ich das hinkriege. Denn die ganze Codezeile runterzukopieren ist sicher nicht richtig.

    Und als letztes versuche ich so eine Funktion wie Passwort zumailen hinzubekommen, wenn man das vergessen hat, aber da bin ich mal total gescheitert. Ich habe so einen Newsletter phplist, wenn den einer kennt und den habe ich auch zum laufen bekommen. Dachte das ich die Anmeldeseiten umbasteln kann aber das ist so verstrickt da muss ich ganz passen. Also daher so ein eigener Versuch. Vielleicht kann mir einer von euch aushelfen.

    Danke TribunM
     

  2. #2
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Setze einfach statt der Fehlermeldungsausgabe ein Flag und gib die Fehlermeldung später aus.
     
    Markus Wulftange

  3. #3
    TribunM TribunM ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    177
    Ja super das ich da nicht selber drauf gekommen bin, nur was ist ein Flag
    Wie gesagt ich habe echt nicht die Ahnung davon und ich denke damit kann ich keine eMail bei einem vergessenen Passwort schicken oder?
     

  4. #4
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Ein Flag bezeichnet bei der Programmierung eine Hilfs- oder Merkvariable, mit der bestimmte Zustände (etwa: es trat ein Fehler auf) für spätere Abgleiche gespeichert werden.
     
    Markus Wulftange

  5. #5
    TribunM TribunM ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    177
    Du scheinst anscheinend Ahnung von PHP zu haben. Ich bin mal ehrlich ich kann mit den Erklärungen dennoch nix anfangen. Ich weiß zwar jetzt ungefär was Flags sind, aber nicht wie man Sie einsetzt, insbesondere in meinem Script. Ich glaube dann lasse ich es mit dem Script, wenn mir nicht wer sagen kann, was ich direkt tun kann.
     

  6. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Ein einfachse Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    if( <Bedingung für Fehlermeldung> ) {
        $fehler = true;
    }
     
    …
     
    if( !empty($fehler) ) {
        echo 'Es ist ein Fehler aufgetreten!';
    }
     
    Markus Wulftange

  7. #7
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Hallo!

    Schreibe die Fehlermeldung in eine Variable:
    PHP-Code:
    $error "Ein Fehler ist aufgetreten!"
    Dann kannst Du an beliebiger Stelle prüfen ob die Variable existiert und sie ausgeben:
    PHP-Code:
    <?php
    if(isset($error)) {
         echo 
    $error;
    }
    ?>
    Gruss Dr Dau
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

  8. #8
    TribunM TribunM ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    177
    cool das habe sogar ich jetzt verstanden. Das klappt ja genau so wie gewünscht
    Jetzt fehlt "nur" noch so ne Passwort vergessen Funktion und ich bin glücklich
     

  9. #9
    splasch splasch ist offline Mitglied Brillant
    Registriert seit
    Jul 2004
    Beiträge
    854
    Mach folgendes
    nihm den Teil
    PHP-Code:
    if (isset($_SESSION['PrevUrl']) && false) { 
          
    $MM_redirectLoginSuccess $_SESSION['PrevUrl'];     
        } 
        
    header("Location: " $MM_redirectLoginSuccess ); 
      } 
      else { 
        echo 
    "Das Passwort oder die E-Mail ist nicht korrekt!"
      } 
    und ändere es so ab
    PHP-Code:
    if (isset($_SESSION['PrevUrl']) && false) { 
          
    $MM_redirectLoginSuccess $_SESSION['PrevUrl'];     
        } 
        
    header("Location: " $MM_redirectLoginSuccess ); 
      } 
      else { 
        
    $Fehler="Das Passwort oder die E-Mail ist nicht korrekt!"
      } 
    Nun zum 2 Teil ändere den

    PHP-Code:
    <form method=POST action="<?php echo $loginFormAction?>" name="subscribeform"> 


    <table width="600" border="0" align="center" cellpadding="2" cellspacing="2"> 
    Bitte E-Mail und Passwort angeben<br> 
    <!-- E-mail --> 
    <tr valign="top" height="20"><td width="290" align="right" class="Normalbold"> 
    <b>E-mail: </b> </td> 
    <td width="296"><input type="text" name="email" size="40" value="" ></td> 
    </tr>
    Folgend ab durch

    PHP-Code:
    <form method=POST action="<?php echo $loginFormAction?>" name="subscribeform"> 


    <table width="600" border="0" align="center" cellpadding="2" cellspacing="2"> 
    Bitte E-Mail und Passwort angeben<br>
    <? echo $fehler ?> <br> 
    <!-- E-mail --> 
    <tr valign="top" height="20"><td width="290" align="right" class="Normalbold"> 
    <b>E-mail: </b> </td> 
    <td width="296"><input type="text" name="email" size="40" value="" ></td> 
    </tr>
    Und mail senden kanste mit
    mail(mail adresse,betreff,inhalt,"From: Absendername <Absender_mailadresse>\n Content-Type: text/plain");
    Geändert von splasch (07.02.07 um 23:40 Uhr)
     

  10. #10
    TribunM TribunM ist offline Mitglied Gold
    Registriert seit
    May 2004
    Beiträge
    177
    Ja das klappt gut. Nur mit dem mailen verstehe ich nicht ganz, weil er soll ja das Passwort schicken, welches zu der Mail passt.

    Aber ich glaube ich lass das. Da muss man schon php richtig können um das zu machen, zumal zwar anmelden usw. geht, aber ich kann ja trotzdem auf die Seiten in den unteren Ebenen, auch wenn ich mich nicht anmelde. Hätte nicht gedacht, dass es so schwer ist, son script zu machen, welches nur die Mail und den user überprüft, aber nunja falsch gedacht

    Hat nicht jemand son Tutorial wie man mit einfachen MItteln einen geschützten Bereich hinbekommt, der mit Session (glaube ich) funktioniert, die eben nur bei korrekter Passwort und eMail Überprüfung generiert werden. Ansonsten soll er eben nur wie schon beschrieben einen Fehler machen, was schon super funktioniert . Und das mit den Sessions sollte für alle unterliegenden Seiten gelten. Sind so 20.

    Mit dem vergessenen Passwort zuschicken versuche ich mir dann auch noch etwas einfallen zu lassen.

    Na ja vielleicht hat wer ja Lust einen totalen Anfänger bei seinen ersten PHP Schritten zu begleiten.
    Geändert von TribunM (08.02.07 um 10:20 Uhr)
     

  11. #11
    splasch splasch ist offline Mitglied Brillant
    Registriert seit
    Jul 2004
    Beiträge
    854
    Da muss man schon php richtig können um das zu machen, zumal zwar anmelden usw. geht, aber ich kann ja trotzdem auf die Seiten in den unteren Ebenen, auch wenn ich mich nicht anmelde. Hätte nicht gedacht, dass es so schwer ist, son script zu machen, welches nur die Mail und den user überprüft, aber nunja falsch gedacht
    Klar nur ein login bring keinen Schutz du mußt schon auch die Geschützen Seiten überprüfen ob der User berechtig ist diese auch einzusehen. Am besten geht das mit einer Session.

    Fals dir das alles zu schwer ist und du nur einen Schutz haben möchste damit nicht jeder deine Geheimen Seiten einsehen kann.Dann benutze den Verzeichniss schutz .htacces
     

  12. #12
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Zitat Zitat von TribunM Beitrag anzeigen
    Hat nicht jemand son Tutorial wie man mit einfachen MItteln einen geschützten Bereich hinbekommt, der mit Session (glaube ich) funktioniert.....
    Nein, es gibt kein Tutorial.
    Ich gaube auch nicht dass das Thema Login hier schon mal besprochen wurde.
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

  13. #13
    TchiboMann TchiboMann ist offline Mitglied Gold
    Registriert seit
    Sep 2005
    Ort
    Lübeck
    Beiträge
    174
    Hmh...

    Ich weiss ja nicht, aber über des Script aus dem Tutorial kann man SQL Injections machen... Da gibts ja keinerlei sicherheitsmechanismen, ziemlich fahrlässig sowas sensibles als Tutorial zu veröffentlichen.

    PHP-Code:
    $sql "SELECT "
        
    "Id, Nickname, Nachname, Vorname "
      
    "FROM "
        
    "benutzerdaten "
      
    "WHERE "
        
    "(Nickname like '".$_REQUEST["name"]."') AND "
        
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"
    $result mysql_query ($sql); 
    da könnt man per url folgendes machen:

    http://[domain]/[pfad]/login.php?name=namedesadmins&pwd=bla' OR id='1'

    und zack müsste man eingeloggt sein. Warum? fehlende Sicherheitsmechanismen.
    Erstens: Superglobale wie $GLOBAL und vor allem $_REQUEST nimmt man NICHT! IMMER die Superglobale nehmen, die auch übertragen wird, sprich $_GET oder $_POST. zudem sollte eine abfrage dann folgendermaßen aussehen:


    PHP-Code:
    $name $_POST['name'];
    $pwd $_POST['pwd'];
    $sql "SELECT "
        
    "Id, Nickname, Nachname, Vorname "
      
    "FROM "
        
    "benutzerdaten "
      
    "WHERE "
        
    "(Nickname like '".mysql_real_escape_string($name)."') AND "
        
    "(Kennwort = '".md5 ($pwd)."')"
    $result mysql_query ($sql); 
    nehnehneh... versteh ich nich, warum man tutorials schreibt, die so unsicher sind. Ich denke man sollte die User gleich mit der harten Realität konfrontieren und denen einbleuen, dass sie ihre Script sicher machen müssen. Zumindest nach bestem Wissen und Gewissen.

    ich selbst habe ein Loginscript entwickelt, bei dem ich 2 sessions nutze - eine PHPSession und eine eigene, die sich alle 60 sekunden erneuert und beim user und in der Datenbank abgespeichert ist. Somit ist es so ziemlich unmöglich den Account zu highjacken, denn einen 128bit schlüssel zu klauen oder nachzubilden dauert weit länger als 60 sekunden. Die PHP-Session dient hierbei eher als zusätzliche Kontrolle und als Userdaten-Speicher

    So, das dazu

    worauf ich hinaus will: TribunM - mach dich DRINGEND mit der Sicherheit von PHP vertraut, bevor du etwas so sensibles wie datenbankbasierte Anwendungen (Loginscript, Newsscript etc) öffentlich nutzt.

    Und vor allem: Gebe NIEMALS die PHP-Sessionid über die Url weiter, wie es teilweise in einigen Tutorials im Inet gemacht wird.. Benutze NIEMALS $GLOBAL und $_REQUEST, sondern frage immer die Methode ab, die du auch übergibst. Nutze bei Datenbankabfragen immer mysql_real_escape_string(); und strip_tags(); (damit werden HTML und PHP-Tags rausgefiltert).

    Ansonsten viel spass PHP ist nicht schwer, bis mans verstanden hat dauerts aber. Und bis dahin empfehle ich eher fertige CMS-Systeme zu nutzen und diese zu studieren, bevor du ein eigenes Loginsystem programmierst.
     

  14. #14
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Das Tutorial ist auch schon "etwas" älter.
    Es dient also nicht zum "abschreiben", sondern zum anregen.
    Letztenendes muss man viele Scripts anpassen (ob nun aus sicherheitstechnischer Sicht oder wegen persönlicher Bedürfnisse).
    Zitat Zitat von TchiboMann Beitrag anzeigen
    da könnt man per url folgendes machen:

    http://[domain]/[pfad]/login.php?name=namedesadmins&pwd=bla' OR id='1'

    und zack müsste man eingeloggt sein.
    Darüber gibt es hier auch (recht aktuelle) andere Meinungen.
     
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

  15. #15
    TchiboMann TchiboMann ist offline Mitglied Gold
    Registriert seit
    Sep 2005
    Ort
    Lübeck
    Beiträge
    174
    Wo? ma suchen gehn... Ich lass mich gern eines besseren belehren, aber da ich damit (bei meinen eigenen Scripten und auch bei fremden) schon erfolg hatte, denke ich mal darf man das auch weiterhin nich ausser acht lassen
     

Ähnliche Themen

  1. QT-Designer: Ich kriegs einfach net hin
    Von devilmc im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 10.06.09, 13:12
  2. PHP SOAP ich Kriegs einfach nicht hin!
    Von jackisback im Forum PHP
    Antworten: 7
    Letzter Beitrag: 12.11.08, 13:14
  3. Antworten: 15
    Letzter Beitrag: 08.09.07, 16:01
  4. ich kriegs nicht hin mit dem cvs
    Von Philipp_Frank im Forum Coders Talk
    Antworten: 6
    Letzter Beitrag: 16.02.06, 13:22
  5. Glas: Ich kriegs einfach nicht hin...
    Von Gonzo28 im Forum 3D Studio Max
    Antworten: 9
    Letzter Beitrag: 20.08.05, 16:38