Loginformular

Wie schreib ich das denn um, dass das Script keine Mailaktivierung braucht?

Du meinst es wird folgendes Ausgegeben?

Dass das ausgegeben wird wundert ja auch nicht. Schließlich handelt es sich dabei um ein einfaches echo nach dem mail() Befehl.
Die Ausgabe erfolgt, unabhängig davon, ob mail() erfolgreich war oder nicht.
Eine bessere Methode wäre etwas in der Art:

$res = mail(.....); if($res) { echo "Du hast dich erfolgreich registriert! Vor wenigen Sekunden wurde eine Mail mit Aktivierungslink an deine E-Mail Adresse gesendet!"; } else { echo "Es ist ein Fehler beim versenden aufgetreten."; }

Ok, aber sag mal , warum bekomm ich den überhaupt gar keine email? liegt das an bplaced oder an dem script ?

In den meisten Fällen gibt es keine Probleme.
Am Script erkenne ich auch keine Fehler.
Vermutungen würden mich dazu führen einfach mal zu fragen, ob die E-Mail adresse, die du angegeben hast, korrekt ist.
Und eventuell solltest du vor dem Mail-Befehl auch mal ein paar Probeausgaben machen.
z.B. solltest du mal den Inhalt von $email überprüfen.

Edit. Es gibt bei bplaced ein E-Mail Limit (100 mails pro tag). Ich glaube kaum, dass es daran liegt, aber du kannst nachschauen wieviele du bereits versendet hast in deinem bplaced UCP.

Na, die email ist richtig, ist ja meine eigene :smiley:

Aber sag mal, was muss ich löschen / ändern, damit das script keine mails versendet und der user sich trotzdem einloggen kann?

Maaaan.

Kann mir den keiner hier sagen, wie ich das Script hinbekomme, ohne aktivierungsmail und mailversand

oder zumindest, wie ich das mit der aktivierungsmail zum laufen bekomme ??

Es artet meistens in Chaos aus, wenn man Scripte einfach kopiert :wink:

Du übergehst zwar hier gezielt Vorschläge und Fragen der fleißigen Helfer, ich werde sie dir trotzdem nochmals auflisten - und nicht böse werden jetzt.

[quote]Und eventuell solltest du vor dem Mail-Befehl auch mal ein paar Probeausgaben machen.
z.B. solltest du mal den Inhalt von $email überprüfen.[/quote]

Und um Protest vorzubeugen:

  • Indem du als ersten Schritt Probeausgaben machst :slight_smile:

Mfg :wink2:

okay mir reichts^^ hier wird einem ja vom zulesen schlecht…

[quote]mail("$email",“Deine Anmeldung bei xxx”,“Hallo $username! \n\n Vielen Dank, dass du dich in der Community von xx regsitriert hast. Um deine Anmeldung abzuschließen klicke bitte auf folgenden Aktivierungslink: \n\n Mail.Steven_Sonntag@freenet.de automail@deineseite.de”);
//und sende eine mail mit dem bestätigungslink[/quote]
löschen, dann wird keine mail mehr verschickt.

close. please. please.

Oder sich erstmal Grundlagen aneignen, bevor man sowas realisieren will…

Das ich das löschen muss, weiß ich auch !
Bringt aber trotzdem nichts, da man sich dann immernoch nicht einloggen kann.
nehme ich aber den aktivierungscode direkt aus der datenbank, und füge den manuell in einen link ein, dann wird der account erst aktiviert.
Es soll ja aber so laufen, dass der user sich selber aktiviert und nicht ich jeden User.

Dann befindet sich womöglich in der Tabelle „benutzerdaten“ noch ein weiteres Feld, welches den Status „aktiviert“ oder ähnliches beinhaltet. Wenn du diesen bei der Registration gleich auf den Wert setzt der den User aktiviert (beim „INSERT INTO“), sollte es das Problem lösen.

Wer schon mal ein Portal, eine Communitie oder ähnliches programmiert hat, weiß, dass das nicht in ein paar Stunden getan ist, ganz besonders, wenn es das erste Projekt ist.

An Stewn: Hast du dir das Tutorial wenigstens komplett durchgelesen?

Ja,durchgelesen habe ich es mir.

Ich glaube der fehler sitzt hier

elseif ($user->aktiv == “0”){
echo “Du musst deinen Account erst freischalten bevor du dich einloggen kannst!”;

CREATE TABLE benutzerdaten (
id INT( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
username VARCHAR( 30 ) NOT NULL ,
passwort VARCHAR( 50 ) NOT NULL ,
email VARCHAR( 50 ) NOT NULL ,
aktiv INT( 0 ) NOT NULL DEFAULT ‘0’,
register_code VARCHAR( 50 ) NOT NULL
) TYPE = MYISAM

reicht es , wenn ich einfach bei aktiv INT 1 eintrage?

Probieren geht überstudieren, versuch’s einfach :slight_smile:

Hab ich grade funktioniert nicht

Hier an diesen dateien muss es liegen:

[code]<?
include (“config.inc.php”);
//includet die Config datei
$user=$_GET[“user”];
//speichert den per URL übergebenen Usernamen in der Variable “user”
$code=$_GET[“code”];
//speichert übergebenen Registrierungs code in Variable “code”

if (isset($user) and isset($code)){
//überprüft ob username und code mit url mitgesendet wurden
$mysql=mysql_fetch_object(mysql_query(“SELECT username, register_code FROM benutzerdaten WHERE username=’”.$user."’"));
//holt benutzerdaten aus der datenbank…

if ($user == $mysql->username and $code == $mysql->register_code){
//und vergleicht sie mit den übergebenen Daten, wenn sie richtig sind…
mysql_query(“UPDATE benutzerdaten Set aktiv=‘1’”);
//setze den aktivierungsstatus des users auf 1…
echo “Du hast dich erfolgreich registriert und kannst dich nun einloggen!”;
//und erzähl, dass der User sich erfolgreich registriert hat
}
else {
//wenn die Daten nicht richtig sind…
echo “Username stimmt nicht mit dem Registrierungscode überein!”;
//erzähl es dem USer xD
}
}
else {
echo “Username oder Registrierungscode fehlt!”;
//wenn die Daten gar nicht erst mitgesendet sind, gib den Error “Username oder REgistrierungscode fehlt” aus
}
?>[/code]

[code]<?
include (“config.inc.php”);
//include die config datei
?>

Registrieren
Username:
Passwort:
Passwort wdh:
E-Mail Adresse:
 
<? //wenn submit gedrückt if (isset($_POST["submit"])) { $username = $_POST["username"]; //speichere das feld username in variable $passwort = md5($_POST["passwort"]); //speichere passwort und verschlüssel es $passwort_wdh = md5($_POST["passwort_wdh"]); //das gleiche mit der Wiederholung nochmal $email = $_POST["email"]; //email -||- $register_code = md5(time()); //erstelle registrierungscode für den aktivierungslink (timestamp it md5 verschlüsselt)

if ($username == “” or $passwort == “d41d8cd98f00b204e9800998ecf8427e” or $email == “”)
{
echo “Du hast nicht alle Felder ausgefüllt!”; //wenn username, passwort oder email leer gib error aus
}
elseif ($passwort != $passwort_wdh)
{
echo “Das eingegebene Passwort stimmt nicht mit der Wiederholung überein!”; //wenn Passwort nicht gleich Wiederholung gib error aus
}
else{
mysql_query(“INSERT INTO benutzerdaten
(username, passwort, email, register_code)
VALUES
(’$username’, ‘$passwort’, ‘$email’, ‘$register_code’)”); //speichere die daten in der Datenbank

    $nachricht = "Hallo ".$username."! \n\n
                  Vielen Dank, dass du dich in der Community von xx regsitriert hast.
                  Um deine Anmeldung abzuschließen klicke bitte auf folgenden Aktivierungslink: \n\n
                  http://stewn.de/test/aktivieren.php?user=".$username."&code=".$register_code;

    $from      =  "From:MAil.Steven_Sonntag@freenet.de>";

    mail($email,"Deine Anmeldung bei xxx",$nachricht,$from); //und sende eine mail
    echo "Du hast dich erfolgreich registriert!
          Vor wenigen Sekunden wurde eine Mail mit Aktivierungslink
          an deine E-Mail Adresse gesendet!";                //gib eine meldung aus
  }

}
?>[/code]

[code]<?
if (isset($_POST[“submit”])){
//wenn submit button betätigt…
$username = $_POST[“username”];
//speichere eingegebenen Usernamen in Variable
$passwort = md5($_POST[“passwort”]);
//speichere eingegebenes Passwort in Varaible und verschlüssele es mit md5()

$user=mysql_fetch_object(mysql_query(“SELECT id, username, passwort, aktiv FROM benutzerdaten WHERE username=’”.$username."’"));
//userdaten aus datenbank holen

if ($username == “” or $passwort == “d41d8cd98f00b204e9800998ecf8427e”){
echo “Du hast nicht alle Felder ausgefüllt!”;
//felder aus inhalt überprüfen, wenn leer error ausgeben (Hinweis: bei passwort steht so eine zeichenfolge, weil mit md5 auch leerer inhalt verschlüsselt wird
}
elseif ($user->aktiv == “0”){
echo “Du musst deinen Account erst freischalten bevor du dich einloggen kannst!”;
//überprüfen ob account mit bestätigungslink freigeschaltet wurde, wenn nicht error ausgeben
}
elseif ($username == $user->username and $passwort == $user->passwort){
//daten überprüfen, wenn richtig…
$_SESSION[“id”] = $user->id;
//registriere die sesson id, mit der ID des users
header (“Location: main.php”);
//leite zu main.php weiter
exit;
//ab hier tu nix mehr ^^
}
else {
//wenn nicht richtig…
echo “Du hast einen falschen Nutzernamen oder ein falsches Kennwort eingegeben!”;
//gib einen error aus
}
}
?>

Registrieren | Passwort vergessen

<? ob_end_flush(); //header warten ende ?>[/code]

Ich werd noch Wahnsinnig

Ich hab’s hinbekommen.

  • closed -

dann poste bitte was du wie gemacht hast, das kann anderen usern mit ähnlichen problemen helfen :wink:

Ich hab in der Datenbank-Tabelle “aktiv” standart auf 1 gesetzt.
Die reg.php überprüft wenn auf 1 steht, dann kann kan sich einloggen. Wenn “0” dann erscheint " Bitte klicken sie auf den Aktivierungslink.

Du solltest dir trotzdem weiterführende Kenntnisse in PHP und MySQL aneignen, dass was du da machst, ist mit quick-and-dirty-Workaround noch nett beschrieben :wink: