• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Log-In-Script modifizieren (Freischaltung der Registrierung)

AW: PHP-Log-In-Script modifizieren (Freischaltung der Registrierung)

Willst du jetzt fertigen Code haben oder wieso soll ein PHP Expere gucken?
Wa du beschreibst spielt sich alles über ein Status Flag in der Datenbank ab. 0=registriert, 1=bestätigt, 2=vom Admin freigeschaltet. Und dann schreibt man halt drum herum das PHP, was das alles macht.
 
AW: PHP-Log-In-Script modifizieren (Freischaltung der Registrierung)

Wa du beschreibst spielt sich alles über ein Status Flag in der Datenbank ab. 0=registriert, 1=bestätigt, 2=vom Admin freigeschaltet. Und dann schreibt man halt drum herum das PHP, was das alles macht.
Oder man ändert den Abschnitt ab Z. 222 ab, und zwar, dass bei Bestätigung durch den User der Aktivierungsstatus noch nicht auf "aktiv" gesetzt wird, sondern ein neuer Hash erstellt wird, der in einer Mail an den Admin gesendet wird, und den dieser dann bestätigen kann.
 
AW: PHP-Log-In-Script modifizieren (Freischaltung der Registrierung)

Willst du jetzt fertigen Code haben oder wieso soll ein PHP Expere gucken?
darum als ursprünglich als How-To markiert, wenn auch von dir inzwischen geändert.

Ich suche eine Lösung, da ich mich mit PHP nicht auskenne und auch keiner meiner Studenten derartige Kenntnisse hat.


Oder man ändert den Abschnitt ab Z. 222 ab, und zwar, dass bei Bestätigung durch den User der Aktivierungsstatus noch nicht auf "aktiv" gesetzt wird, sondern ein neuer Hash erstellt wird, der in einer Mail an den Admin gesendet wird, und den dieser dann bestätigen kann.

Könntest du mir zeigen, wie das abgeändert aussehen müsste, oder ist das zu viel verlangt?
 
Zuletzt bearbeitet:
PHP:
public

function verifyNewUser($user_id, $user_activation_hash)
{
   if ($this->databaseConnection()) {
      $query_update_user = $this->db_connection->prepare('UPDATE users SET user_activation_hash = NULL WHERE user_id = :user_id AND user_activation_hash = :user_activation_hash');

      // noch nicht aktiv gesetzt!

      $query_update_user->bindValue(':user_id', intval(trim($user_id)) , PDO::PARAM_INT);
      $query_update_user->bindValue(':user_activation_hash', $user_activation_hash, PDO::PARAM_STR);
      $query_update_user->execute();
      if ($query_update_user->rowCount() > 0) {
         $this->verification_successful = true;
         $this->messages[] = MESSAGE_REGISTRATION_ACTIVATION_SUCCESSFUL;
      }
      else {
         $this->errors[] = MESSAGE_REGISTRATION_ACTIVATION_NOT_SUCCESSFUL;
      }

      // stattdessen: Mail an den Admin senden

      $mail = new PHPMailer;
      if (EMAIL_USE_SMTP) {
         $mail->IsSMTP();
         $mail->SMTPAuth = EMAIL_SMTP_AUTH;
         if (defined(EMAIL_SMTP_ENCRYPTION)) {
            $mail->SMTPSecure = EMAIL_SMTP_ENCRYPTION;
         }

         $mail->Host = EMAIL_SMTP_HOST;
         $mail->Username = EMAIL_SMTP_USERNAME;
         $mail->Password = EMAIL_SMTP_PASSWORD;
         $mail->Port = EMAIL_SMTP_PORT;
      }
      else {
         $mail->IsMail();
      }

      $mail->From = EMAIL_VERIFICATION_FROM;
      $mail->FromName = EMAIL_VERIFICATION_FROM_NAME;
      $mail->AddAddress("admin@example.com"); //E-Mail-Adresse des Admins
      $mail->Subject = "Ein neuer Benutzer muss freigeschaltet werden";

      $query_get_user = $this->db_connection->prepare('SELECT * WHERE user_id = :user_id');
      $query_get_user->bindValue(':user_id', intval(trim($user_id)) , PDO::PARAM_INT);
      $query_get_user->execute();
      $user_name = $query_get_user["user_name"];
      $mail->Body = "Bitte loggen Sie sich in PHPMyAdmin ein und schalten Sie den Benutzer " . $user_name . " aktiv, indem Sie in der betreffenden Zeile den Wert 'active' auf '1' setzen.";
      if ($mail->Send()) {
         echo "Account erfolgreich bestätigt. Bitte auf Freischaltung durch Armin warten!";
      }
   }
}
 
Hallo ich nuss dich (euch) noch was fragen. (Ist fast schon peinlich)

Nach dem Login soll der Benutzer an die Seite weitergeleitet werden, auf der er war, bevor er sich eingeloggt hat.
Habe nach PHP und Weiterleitung gegooglet und irgendwas über header(location) gefunden aber nichts wie ich zuver besuchte Seite da unterbekomme.

Könntest du mir eventuell noch zeigen, wie so eine Umleitung aussehen müsste?
 
Dazu müsstest du nach Z. 338 folgenden Abschnitt einfügen:
PHP:
if(!empty($_SERVER["HTTP_REFERER"])){
  header("Location: ".$_SERVER["HTTP_REFERER"]);
}
 
Also PHP und ich werden in diesem Leben keine Freunde mehr.

Verstehen tu ichs nicht, auch wenns wohl funktioniert.
 
Also PHP und ich werden in diesem Leben keine Freunde mehr.
Du magst kein PHP? :eek: dabei ist PHP doch eine so schöne Sprache ;)
Also, in der Variablen $_SERVER["HTTP_REFERER"] ist die zuletzt besuchte Seite, der Referer gespeichert. Wenn also diese Variable nicht leer oder null ist (if(!empty(), wird der Header mitgesendet, der dem Browser mitteilt, dass er sein Ziel unter dieser URL findet und daraufhin umleitet.
 
Hmn ich glaube ich mag PHP nicht, weil ich es nicht verstehe.
In der Beschreibung des LogIn-Scripts steht zum Beispiel auch das es einen LogOut gibt, aber den kann ich nirgends finden, müsste wahrscheinlich erste erstellt werden.

Hatte ja gehofft, das das Script soweit fertig zum Einbau ist und ich nur die obrn genannten Änderungen einbauen muss.
Aber da scheint noch einiges zum konfigurieren zu sein, was ohne PHP-Kenntnisse doch recht schwierig ist.
Die Doku ist auch nicht gerade Eibsteiger-Freundlich, wird zuviel Wissen vorausgesetzt, was ich nicht habe.
 
Zuletzt bearbeitet:
Man muss halt insofern sagen, dass es sich bei diesem Login-/Registrierungs-/Benutzerverwaltungsskript um ein schon eher umfangreicheres Projekt handelt. Von daher ist es für Einsteiger verständlicherweise schwer zu verstehen.
 
Du musst dich dazu in PHPMyAdmin einloggen und dort die Datei importieren. Dadurch werden dann die nötigen MySQL-Tabellen erstellt.
 
Du musst dich dazu in PHPMyAdmin einloggen und dort die Datei importieren. Dadurch werden dann die nötigen MySQL-Tabellen erstellt.

Das geht so nicht, denn das Problem ist, ich muss erst eine MySql DB anlegen, bevor ich mich in phpmyadmin anmelden kann und der Name der DB muss entweder meinem Benutzernamem entsprechen oder das Format Benutzername_irgendwas entsprechen. Eine DB namens "login" geht also gar nicht.

Ist irgendwo in dem Script oder in den SQL eine Stelle, in der ich den Namen der DB anders einstellen kann?

- - - Aktualisiert - - -

Oder wie kann ich das Script dennoch laufen lassen?

Lokal funktioniert es, nur beim Hosting müsste ich ja die DB anders nennen können.

Wo mach ich da wie was?
 
Das geht so nicht, denn das Problem ist, ich muss erst eine MySql DB anlegen, bevor ich mich in phpmyadmin anmelden kann und der Name der DB muss entweder meinem Benutzernamem entsprechen oder das Format Benutzername_irgendwas entsprechen. Eine DB namens "login" geht also gar nicht.
Das ist egal, du kannst den Namen der Datenbank frei wählen. Du musst ohnehin Benutzername, Passwort usw. in folgender Datei definieren: .../config.php (L17)
 
Ich denke, die zweite SQL-Dateii, aus install; die die Tabelle users schreibt, erwartet, das die MySql-DB "login" heißt, denn wenn ich diese sql uber myadmin importieren will, gibt's imm einen Fehler, aber hab jetzt in der entsprechenden Sql auch nicht gesehen, wo der Name geändert werden könnte.
 
Zuletzt bearbeitet:
Ich denke, die zweite SQL-Dateii, aus install; die die Tabelle users schreibt, erwartet, das die MySql-DB "login" heißt, denn wenn ich diese sql uber myadmin importieren will, gibt's imm einen Fehler
Kannst du mal die Fehlermeldung zeigen?
Vorsicht: Datenbankname !== Tabellenname! Und in den SQL-Anweisungen in create-user-table.sql ist der Datenbankname ohnehin irrelevant.
 
Zurück
Oben