• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Profil + Memberliste coden.

Status
Für weitere Antworten geschlossen.
Werbung:
Es muss doch irgendwas an dem Code auszusetzen geben :cry:

Wenn nicht, dann kann Q-Meay den ja verwenden :D
 
Werbung:
1. Überprüfen der Mailadresse
2. Nachschauen, ob Adresse schon in db
3. Überprüfungscode an Mail schicken
4. Account bei korrektem Code freischalten

Gruß, Fredmonster!
 
Meinst du so ne Art Bestaetigungsmail?

Also ich wuerde das so in der Art machen (hab mal vor und nach den neuen Stellen ein Comment geschrieben):

register.php

PHP:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html>
<head>
<title>Benutzer Registrieren</title>
</head>
<body>
<?php
error_reporting(E_ALL);
include("daten.php");
if(isset($_POST['submit'])){
@mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS) OR die('Verbindung zur Datenbank war Fehlerhaft');
mysql_select_db(MYSQL_DATABASE) OR die('Datenbank konnte nicht ausgew&auml;hlt werden');
$benutzer = htmlspecialchars(addslashes(trim($_POST['vorname'])));
$mailadresse = htmlspecialchars(addslashes(trim($_POST['mailadresse'])));
$homepage = htmlspecialchars(addslashes(trim($_POST['homepage'])));


//Mail und Vorname auslesen
$sql2 = "SELECT
             mailadresse,
             vorname
         FROM
             ".MYSQL_TABELLE."
         WHERE
             mailadresse = '".$mailadresse."' OR
             vorname = '".$vorname."';";
$erg = mysql_query($sql2) OR die("Ueberpruefung fehlgeschlagen.");
if(mysql_num_rows($erg) == 0){
//Aber hier wieder normaler Code, der nur ausgefuehrt wird, falls weder //Username noch Mail n der DB vorhanden sind.


if(!empty($benutzer) AND !empty($mailadresse) AND !empty($homepage)){


//zufaelligen code erzeugen
$zufall = "asdASDFasdfasDFsgYJRTkjrgjrtyJYJJRUktyio";
$pruefe = str_shuffle($zufall);
//zufallscode in variable $pruefe erzeugt

//INSERT-Query um die Felder "aktivierungscode" und "aktiviert" erweitert
$sql = "INSERT INTO
           ".MYSQL_TABELLE."(vorname,mailadresse,homepage,aktivierungscode,aktiviert)
        VALUES
            ('".$benutzer."','".$mailadresse."','".$homepage."','".$pruefe."','false');";

//Angaben fuer die mail
$betreff = "Anmeldung bei...";
$inhalt = "Hier der Aktivierungscode: http://www.deinseite.de/aktivate.php?code=".$pruefe." Bevor du diese Seite nicht besuchst wird dein Accoutn nicht aktiv.";
mail($mailadresse, $betreff, $inhalt);
//ender der mail


$ergebnis = mysql_query($sql) OR die("Der User ".$_POST['vorname']." konnte nicht in die Datenbank geschrieben werden.");
echo "Der User ".$_POST['vorname']." wurde in die Datenbank eingetragen.\n";
} else {
echo "Bitte geben sie einen g&uuml;ltigen Namen, eine eMailadresse und eine Homepage an.\n");
}
} else {
echo "<form action=\"register.php\" method=\"post\">\n";
echo "Vorname: <input type=\"text\" name=\"vorname\" /><br />\n";
echo "eMail: <input type=\"text\" name=\"mailadresse\" /><br />\n";
echo "Homepage: <input type=\"text\" name=\"homepage\" /><br />\n";
echo "<input type=\"submit\" /><br />\n";
echo "</form>\n";
}
} else {
echo "eMail-Adresse wurde bereits angegeben.";
}
?>
</body>
</html>

aktivate.php
PHP:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html>
<head>
<title>Benutzer Registrieren</title>
</head>
<body>
<?php
error_reporting(E_ALL);
include("daten.php");
$sql = "SELECT
            vorname
        FROM
            ".MYSQL_TABELLE."
        WHERE
            aktivierungscode = '".$_GET['code']."' AND
            aktiviert = 'false';";
$erg = mysql_query($sql) OR die("Konnte keinen query senden.");
$user = mysql_fetch_assoc($erg);
if(!empty($user['vorname'])){
$sql2 = "UPDATE
             ".MYSQL_TABELLE."'
         SET
             aktiviert = 'true';
         WHERE
             aktivierungscode = '".$_GET['code']."';";
$erg = mysql_query(sql2) OR die('Konnte nicht in Datenbank schreiben.');
echo "Der Benutzer ".$user['vorname']." wurde erfolgreich aktiviert.";
}
?>
</body>
</html>
Die neue Tabelle sollte so aussehen:
Code:
+---------+-------------+---------------+------------------+-----------+
| vorname | mailadresse | homepage      | aktivierungscode | aktiviert |
+---------+-------------+---------------+------------------+-----------+
| hier    | kommen      | dann          | der lange und    |    true   |
| später  | die ganzen  | verschiedenen | zufaellige code  |    oder   |
| eingaben| hinein      | .             | kommt hier hin   |    false  |
+---------+-------------+---------------+------------------+-----------+

Man sollte noch in der register.php die mail-adresse mittels eines regex pruefen, aber davon hab ich leider keine ahnung :-/

Leider kann ich das Script auch nicht einruecken, da es sonst in dem Forum absolut unebersichtlich ist (weil natuerlich PHP-Codetags begrenzt breit sind, und fast nie nach link und rechts expandieren.


Bei fehlern oder Verbesserungsvorschlaegen einfach posten :D

\E: Hab dann auch mal na kurze Frage: Bei tut.php-q.net haben alle querys noch vor dem schliessenden anfuehrungszeichen ein semikolon, auf php.net steht aber, dass das nicht so sein soll. Was denn nun?

/e2: Waere das ein funktionierender Regex?
PHP:
$reg = '/.*?@.*?\.(.){2,6}/';
//          ^--Muss das @ escaped werden? eher nicht, oder?
nicht schlagen, wenns falsch ist, ich kenn mich mit regex nicht so aus :(
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben