php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 4,00 durchschnittlich.
  #16 (permalink)  
Alt 12-07-2011, 19:23
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

Erzeuge ein Token (einen zufälligen String), speichere ihn in der DB und baue ihn in den Link in der Mail ein.
Klickt der User auf den Link, schaust du in der DB nach, ob das Token existiert, ob es noch gültig ist (Zeitpunkt der Erzeugung muss ebenfalls in DB vorliegen), loggst den zugehörigen User ein (Zuordnung zum User muss ebenfalls in der DB vorliegen), bittest den User ein Passwort zu setzen, falls das nicht bereits bei der Registrierung passiert ist, setzt den User auf "aktiv" und löschst das Token.
Mit Zitat antworten
  #17 (permalink)  
Alt 12-07-2011, 22:07
wessei
 Registrierter Benutzer
Links : Onlinestatus : wessei ist offline
Registriert seit: Jul 2011
Beiträge: 20
wessei befindet sich auf einem aufstrebenden Ast
Standard

wie könnte so etwas aussehen?

wie sieht dieser link aus
der dan in der db nachsehen kann.
wie setzt es dan auf aktiv und und wie kann ich es überwachen das er aktiv ist.

mfg. wessei
Mit Zitat antworten
  #18 (permalink)  
Alt 13-07-2011, 04:29
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Sorry, aber die Rückfragen sind einigermaßen unverständlich.

Das Token ist eine eindeutige Bytefolge. Zum Beispiel eine Folge von 10 zufälligen Buchstaben (a-z) und Ziffern (0-9). Die Idee dahinter ist, dem jeweiligen Nutzer eine Möglichkeit an die Hand zu geben, zu beweisen, dass er Inhaber einer Mail-Adresse ist.

Beispiel:

Nutzer A registriert sich, hat aber sein Konto noch nicht aktiviert. Nutzer A wird nun ein Link zugeschickt, mit dem er sein Konto aktivieren kann. Dieser Link enthält das Token "123xyz". Nutzer A kann das Token nur dann kennen, wenn er die entsprechende Mail abruft (= Inhaber der Mail-Adresse ist).

Gleichzeitig ist auf dem Server hinterlegt, dass Nutzer A ein Link mit dem Token "123xyz" zugeschickt wurde und dass das Konto als aktiviert gelten soll, wenn ein entsprechender Request eingeht, der dieses Token übermittelt (beispielsweise als GET-Parameter).

Geändert von mermshaus (13-07-2011 um 04:35 Uhr)
Mit Zitat antworten
  #19 (permalink)  
Alt 13-07-2011, 08:55
wessei
 Registrierter Benutzer
Links : Onlinestatus : wessei ist offline
Registriert seit: Jul 2011
Beiträge: 20
wessei befindet sich auf einem aufstrebenden Ast
Standard

ohh ok danke
versteh schon was du damit meinst ;-)

werd mich gleich an die arbeit machn :-D

mfg. wessei
Mit Zitat antworten
  #20 (permalink)  
Alt 17-11-2015, 19:31
GuyLikeMerlin
 Registrierter Benutzer
Links : Onlinestatus : GuyLikeMerlin ist offline
Registriert seit: Nov 2015
Beiträge: 2
GuyLikeMerlin befindet sich auf einem aufstrebenden Ast
Standard

Hallo...
Ich bin grade dabei diese ganze PHP Geschichte etwas genauer anzueignen. Dafür habe ich eine fiktive Seite gebastelt auf der man sich auch registrieren kann. Also fiktiv deshalb weil das nie was Sinnvolles wird sondern einfach nur für mich zur übung. Deswegen bitte ich auch drum das man mich nicht zu scharf kritisiert . Aber anmerkungen und verbesserungsvorschläge nehme ich natürlich gern an.
So nun zu meinem Problem:
wie schon gesagt habe ich ein Registrierungsformular welches auch funktioniert und möchte auch gerne einen Bestätigungslink per email versenden. Grundsätzlich trägt mir mein Script alles gewünschte in meine Datenbank ein inklusive "Code" zum Bestätigen der E-Mail Adresse allerdings schickt es mir keine E-Mail. Könnte da mal jemand drüber schauen und mir sagen was genau ich falsch mache?
Schon mal vielen dank im vorraus.
P.S.: Das "if" für das eintragen und senden der email beginnt bei Zeile 94, die wichtigen Daten habe ich durch "..." ersetzt weil ich leider schon mal sehr schlechte Erfahrungen gemacht habe, Die Seite wird nicht auf einem lokalem Server ausgeführt sonder auf ner gehosteten Domain und das E-Mail Script für sich funtioniert. Das ist getestet.
Mit Zitat antworten
  #21 (permalink)  
Alt 17-11-2015, 19:33
GuyLikeMerlin
 Registrierter Benutzer
Links : Onlinestatus : GuyLikeMerlin ist offline
Registriert seit: Nov 2015
Beiträge: 2
GuyLikeMerlin befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<?php
$verbindung 
mysql_connect("...""..." "...")
or die(
"Verbindung zur Datenbank konnte nicht hergestellt werden");

mysql_select_db("...") or die ("Datenbank konnte nicht ausgewählt werden");

$username $_POST["username"];
$passwort $_POST["passwort"];
$passwort2 $_POST["passwort2"];
$email $_POST["email"];
$geb $_POST["geb"];
$aktiv $_POST["aktiv"];
$autho $_POST["autho"];
$reg $_POST["reg"];
$ip $_POST["ip"];
$stat $_POST["stat"];

function 
ID($return) {
    
srand(time());
        
$id "";
    
$a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
     for(
$i=0$i<=$return$i++) {

         
$id.=substr($a, (rand()%(strlen($a))),1);
     }
      return(
$id);
}

$link id('12');

if(
$passwort != $passwort2 OR $username == "" OR $passwort == "")
    {
    echo 
"    <html>
                <head>
<title>...</title> 
                <
                </head> 
                <body bgcolor=\"#333333\">
                <p class=\"style1\" align=\"center\">&nbsp;</p>
                <p class=\"style1\" align=\"center\">Anmeldung</p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                <p class=\"style3\" align=\"center\">Vielen Dank f&uuml;r Ihre Anmeldung.</p>
                <p class=\"style3\" align=\"center\">Leider ist etwas schief gelaufen.</p>
                <p class=\"style3\" align=\"center\"><a  href=\"/anmelden.php?username=$username&passwort=$passwort&passwort2=$passwort2&email=$email&geb=$geb\">Felder  auffüllen.</a></p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                </body>
                </html>"
;
    exit;
    }
$passwort md5($passwort);

$result mysql_query("SELECT id FROM user WHERE username LIKE '$username'");
$menge mysql_num_rows($result);

if(
$menge == 0)
    {
    
$eintrag "INSERT INTO user (username, passwort, email, aktiv,  autho, reg, link, geb, ip, stat) VALUES ('$username', '$passwort',  '$email', '$aktiv', '$autho', '$reg', '$link', '$geb', '$ip', '$stat')";
    
$eintragen mysql_query($eintrag);

    if(
$eintragen == true)
        {
        echo 
"    <html>
                <head>
                <title>...</title> 
                <style type=\"text/css\">
                <!--
                .style1 {
                    color: #00CC00;
                    font-size: 36px;
                }
                .style2 {
                    font-size: 18px;
                    color: #00CC00;
                }
                .style3 {
                    color: #00CC00;
                    font-size: 14px;
                }
                .form1 {
                    color: #00CC00;
                    font-size: 18px;
                    border: 3px
                    border-color: #00CC00;
                    background-color: #333333;
                    width: 195px;
                }
                .form2 {
                    color: #00CC00;
                    font-size: 18px;
                    border: 3px
                    border-color: #00CC00;
                    background-color: #333333;
                    width: 300px;
                }
                a:link { color: #00CC00; }
                a:visited { color: #00CC00; }
                -->
                </style>
                </head> 
                <body bgcolor=\"#333333\">
                <p class=\"style1\" align=\"center\">&nbsp;</p>
                <p class=\"style1\" align=\"center\">Anmeldung</p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                <p class=\"style3\" align=\"center\">Vielen Dank f&uuml;r Ihre Anmeldung.</p>
                <p class=\"style3\" align=\"center\">Der  gew&uuml;nschte Benutzername: $username wurde f&uuml;r Sie  erstellt.</p>
                <p class=\"style3\" align=\"center\">Bitte  best&auml;tigen Sie Ihre Email-Adresse mit dem Link den  Sie</p>
                <p class=\"style3\" align=\"center\">via Email auf $email bekommen haben.</p>
                <p class=\"style2\" align=\"center\">$link</p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                </body>
                </html>"
;

            
$to $email;
            
$subject "Best&auml;tigungsmail von ...";
            
            
$message "
                        <html>
                        <head>
                        <title>Best&auml;tigungsmail</title>
                        </head>
                        <body>
                        <p>Hallo $username</p>
                        <p>&nbsp;</p>
                        <p>Bitte &ouml;ffnen Sie folgenden Link um Ihren Benutzerkonto freizuschalten.</p>
                        <p>&nbsp;</p>
                        <p><a  href=\"....com/autho.php?username=$username&link=$link\">E-Mail  Adresse best&auml;tigen-</a></p>
                        </body>
                        </html>
            "
;

$headers "MIME-Version: 1.0" "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" "\r\n";

$headers .= 'From: <noreply@....com>' "\r\n";

mail($to,$subject,$message,$headers);
            
        }

    else
        {
        echo 
"    <html>
                <head>
                <title>...</title> 
                <style type=\"text/css\">
                <!--
                .style1 {
                    color: #00CC00;
                    font-size: 36px;
                }
                .style2 {
                    font-size: 18px;
                    color: #00CC00;
                }
                .style3 {
                    color: #00CC00;
                    font-size: 14px;
                }
                .form1 {
                    color: #00CC00;
                    font-size: 18px;
                    border: 3px
                    border-color: #00CC00;
                    background-color: #333333;
                    width: 195px;
                }
                .form2 {
                    color: #00CC00;
                    font-size: 18px;
                    border: 3px
                    border-color: #00CC00;
                    background-color: #333333;
                    width: 300px;
                }
                a:link { color: #00CC00; }
                a:visited { color: #00CC00; }
                -->
                </style>
                </head> 
                <body bgcolor=\"#333333\">
                <p class=\"style1\" align=\"center\">&nbsp;</p>
                <p class=\"style1\" align=\"center\">Anmeldung</p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                <p class=\"style3\" align=\"center\">Vielen Dank f&uuml;r Ihre Anmeldung.</p>
                <p class=\"style3\" align=\"center\">Leider ist etwas schief gelaufen.</p>
                <p class=\"style3\" align=\"center\"><a  href=\"/anmelden.php?username=$username&passwort=$passwort&passwort2=$passwort2&email=$email&geb=$geb\">Nochmal  versuchen.</a></p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                </body>
                </html>"
;
        }


    }

else
        {
        echo 
"    <html>
                <head>
                <title>...</title> 
                <style type=\"text/css\">
                <!--
                .style1 {
                    color: #00CC00;
                    font-size: 36px;
                }
                .style2 {
                    font-size: 18px;
                    color: #00CC00;
                }
                .style3 {
                    color: #00CC00;
                    font-size: 14px;
                }
                .form1 {
                    color: #00CC00;
                    font-size: 18px;
                    border: 3px
                    border-color: #00CC00;
                    background-color: #333333;
                    width: 195px;
                }
                .form2 {
                    color: #00CC00;
                    font-size: 18px;
                    border: 3px
                    border-color: #00CC00;
                    background-color: #333333;
                    width: 300px;
                }
                a:link { color: #00CC00; }
                a:visited { color: #00CC00; }
                -->
                </style>
                </head> 
                <body bgcolor=\"#333333\">
                <p class=\"style1\" align=\"center\">&nbsp;</p>
                <p class=\"style1\" align=\"center\">Anmeldung</p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                <p class=\"style3\" align=\"center\">Vielen Dank f&uuml;r Ihre Anmeldung.</p>
                <p class=\"style3\" align=\"center\">Leider ist  gew&uuml;nschte Benutzername: $username schon vergeben.</p>
                <p class=\"style3\" align=\"center\"><a  href=\"/anmelden.php?passwort=$passwort&passwort2=$passwort2&email=$email&geb=$geb\">Mit  neuem Benutzernamen anmelden.</a></p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                <p class=\"style2\" align=\"center\">&nbsp;</p>
                </body>
                </html>"
;
        }
?>
Mit Zitat antworten
  #22 (permalink)  
Alt 17-11-2015, 19:47
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.651
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Wozu verwendest du LIKE? Ich sehr hier keinen Anwendungszweck dafür.

Werte, die du in SQL-Code einfügst, müssen mit mysql_real_escape_string() maskiert werden, ansonsten ist das eine riesige Sicherheitslücke.

mysql_* Funktionen sind veraltet und werden bald aus PHP entfernt. Schau dir stattdessen mal mysqli oder PDO an.

Es gibt keinen Grund Umlaute zu verst&uuml;mmeln.

HTML-Klassen sollten sinnvoll und sprechend benannt werden und nicht style1, style2, usw.

md5() ist veraltet und unsicher. Verwende besser password_hash().

Eine Code-Zeile sollte nicht länger als 80 Zeichen haben, vor allem, wenn du den Code im Internet publizierst. Es gibt nichts nervigeres als ständig nach rechts und links zu scrollen.

Entscheide dich für eine Sprache und vermische sie nicht ($result, $eintrag, etc.). Am besten immer alles Englisch schreiben, weil das die Sprache in der IT ist.

Verwende nicht mail(), sondern eine Mailer-Bibliothek wie zB. PHPMailer. Für den üblichen Programmierer bedeutet es einen irrsinnigen Aufwand eine Mail so korrekt zu gestalten, dass sie problemlos mit mail() verschickt werden könnte. Diese Arbeit nimmt einem so eine Mailer-Bibliothek ab. Dein Code mag vielleicht jetzt für den Augenblick in genau deinen Testfällen funktionieren. Aber die Wahrscheinlichkeit, dass es so wirklich korrekt und zuverlässig auf Dauer funktioniert ist etwa so hoch wie ein 6er im Lotto.

Geändert von h3ll (17-11-2015 um 19:50 Uhr)
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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

ContentLion - Open Source CMS ansehen ContentLion - Open Source CMS

ContentLion ist ein in PHP geschriebenes CMS, bei dem man Seiten, Einstellungen usw. in Ordnern lagern kann

22.08.2019 stevieswebsite2 | Kategorie: PHP/ CMS
Adsman Pro - Werbe-Manager V.1.1.0

Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebigem Format, Textanzeigen und Page-Peels mit umfangreichen Text und Flash-Effekte.

30.07.2019 rhs | Kategorie: PHP/ Bannerverwaltung
HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

30.07.2019 Berni | Kategorie: MYSQL/ Management
 Alle PHP Scripte anzeigen

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