Announcement

Collapse
No announcement yet.

Mail - Aktivierungslink - DB-Abfrage

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mail - Aktivierungslink - DB-Abfrage

    Hallo!

    Ich habe eine Webseite, welche auf MySQL - Basis läuft.
    Wenn User sich registrieren, wird eine Mail mit einem Registrierungslink an diese rausgeschickt, aber der Link besitzt folgenden Fehler:

    bsp.:

    h**p://beispiel.beispiel.de/cwphp4/php?user-confirm&check=f06cbcef289d051a97d0dfaed8326f5d

    vor dem "php?user-confirm~" fehlt noch ein "index." und versuche heraus zu bekommen, wie dieser generiert wird.

    Soweit hab ich herausgefunden, dass dieser per php so definiert wird:

    Code:
    $confirmlinktext = '';
    
    	# confirm insert in confirm tb not confirm insert in user tb
    	if ( $allgAr['forum_regist_confirm_link'] == 1 ) {
    		# confirm link + text ... bit of shit put it in languages file
    	  $page = $_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
    		$id = md5 (uniqid (rand()));
    		$confirmlinktext = "\n".$lang['registconfirm']."\n\n".sprintf($lang['registconfirmlink'], $page, $id );
    		db_query("INSERT INTO prefix_usercheck (`check`,name,email,pass,datime,ak)
    		VALUES ('".$id."','".$name."','".$mail."','".$md5_pass."',NOW(),1)");
      } else {
    	  db_query("INSERT INTO prefix_user (name,pass,recht,regist,llogin,email,status,opt_mail,opt_pm)
    		VALUES('".$name."','".$md5_pass."',-1,'".time()."','".time()."','".$mail."',1,1,1)");
    		$userid = db_last_id();
    	}
      $regmail = sprintf($lang['registemail'],$name, $confirmlinktext, $name, $new_pass);
    
    	icmail($mail,'Anmeldung',$regmail); # email an user
    
      return (true);

    Es gibt, wie man sehen kann die Abfrage "$_SERVER["HTTP_HOST"]" und "$_SERVER["SCRIPT_NAME"]", welche zusammen irgendwie diesen Link definieren..

    Diese Abfragen müssen doch in der SQL-Datenbank irgendwie hinterlegt sein.
    Wenn Ja, wo?

    Ich möchte diese nämlich ändern, dass
    Code:
    $_SERVER["SCRIPT_NAME"]
    nicht einfach nur sowas wie php?user ausgibt, sondern index.php?user


    Ich hoffe, ihr könnt mir helfen, ich recherchiere nun schon seit zwei Tagen und weiß nicht weiter.

    Sollte die Problemstellung nicht klar sein, fragt ruhig nach.
    Zuletzt editiert von Dorian; 21.05.2008, 07:24.

  • #2
    Originally posted by Dorian View Post
    ...Es gibt, wie man sehen kann die Abfrage "$_SERVER["HTTP_HOST"]" und "$_SERVER["SCRIPT_NAME"]", welche zusammen irgendwie diesen Link definieren..

    Diese Abfragen müssen doch in der SQL-Datenbank irgendwie hinterlegt sein.
    Wenn Ja, wo?
    Nein, diese Werte kommen nicht aus der SQL-Datenbank. Die Variable $_SERVER ist eine s.g. Superglobale, die automatisch von PHP mit verschiedenen, vom Webserver bereitgestellten Informationen, gefüllt wird.
    In $_SERVER["SCRIPT_NAME"] steht dabei der Name des gerade aufgerufenen Scriptes. Dieses heißt bei dir nicht zufällig einfach 'php'? Wenn du die dynamische Linkerzeugung mit einem expliziten index.php ersetzen möchtest, kannst du
    PHP Code:
    $page $_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"]; 
    ja einfach durch
    PHP Code:
    $page $_SERVER["HTTP_HOST"].'/index.php'
    ersetzen.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Hallo Falk!

      Vielen Dank für die Antwort, ich werd heute Abend mal prüfen, ob ich damit den Fehler beheben kann.

      Das Anmeldescript heißt bei mir eigentlich index.php?user-regist,
      daher verwundert dieser Fehler mich umso mehr..

      Denn vor einiger Zeit ging das ja sogar mal und nun hab ich mal die scripte aus dem backups mit dem aktuellen verglichen und sehe auch keinen Unterschied.


      Wenn ich es in
      Code:
      $page = $_SERVER["HTTP_HOST"].'/index.php';
      umschreibe, sollte das Ergebnis des Registrierungslinks also ungefähr so aussehen, ja? :

      h**p://beispiel.beispiel.de/cwphp4/index.php?user-confirm

      Seltsam finde ich auch folgendes:

      Im Adminmenü kann ich ja sehen, wer sich registrieren wollte, mit welcher emailadresse und dem registrierungslink.. der Link, welcher dort steht ist jedoch korrekt ..


      EDIT: Ich hab das nochmal mit dem alten Link verglichen, welcher damals funktionierte.. seltsamerweise steht da auch nur /php?user-confirm&check usw.

      Jetzt bin ich total verwirrt O.o
      Zuletzt editiert von Dorian; 21.05.2008, 09:53.

      Comment


      • #4
        Originally posted by Dorian View Post
        ...Wenn ich es in
        Code:
        $page = $_SERVER["HTTP_HOST"].'/index.php';
        umschreibe, sollte das Ergebnis des Registrierungslinks also ungefähr so aussehen, ja? :
        h**p://beispiel.beispiel.de/cwphp4/index.php?user-confirm
        Nein! Der Link würde dann eher so aussehen:
        h**p://beispiel.beispiel.de/index.php

        Originally posted by Dorian View Post
        ...Seltsam finde ich auch folgendes:

        Im Adminmenü kann ich ja sehen, wer sich registrieren wollte, mit welcher emailadresse und dem registrierungslink.. der Link, welcher dort steht ist jedoch korrekt ..


        EDIT: Ich hab das nochmal mit dem alten Link verglichen, welcher damals funktionierte.. seltsamerweise steht da auch nur /php?user-confirm&check usw.

        Jetzt bin ich total verwirrt O.o
        Da würde mich mal interessieren, wie du das "Aussehen" des Links ermittelst!?

        Und was bedeuten eigentlich die ** in h**p://. Hast du das mit Absicht so ersetzt oder sieht der Link tatsächlich so aus?

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Die sternchen habe ich selber da rein geschrieben.. da es ja nur ein beispiellink auf html-basis ist und ich nicht wusste, ob das irgendwie weiterverarbeitet wird.

          Übrigens lag ich da ein wenig falsch was ich sagte und hab auch den Fehler finden können..

          Ich habe ganz einfach das
          Code:
          $_SERVER["SCRIPT_NAME"]
          in etwa so umgeschrieben wie du es gesagt hattest, und siehe da.. prompt funktionierte es.

          Vielen Dank für die Hilfe!

          Comment

          Working...
          X