Einladungscode per URL-Parameter an Registrierungsformular übergeben

  • Wenn man {$inviteCode} im Template __inviteRegister wie folgt austauscht, kann man Einladungscodes auch per URL-Parameter übergeben und direkt ins Formular übernehmen:


    Smarty
    {if !$tpl.get.inviteCode|empty && $inviteCode|empty}{$tpl.get.inviteCode|strip_tags}{else}{$inviteCode}{/if}


    Ansonsten halt PHP-seitig, was vermutlich auch besser wäre, da man wegen des Disclaimers wahrscheinlich mit Sessions arbeiten muss, weil der Parameter durch die Umleitung auf selbigen verworfen würde.


    EDIT:


    1. EL auf readParameters@registerForm:


    PHP
    if (!empty($_GET['inviteCode'])) {
        WCF::getSession()->register('inviteCode', strip_tags(StringUtil::trim($_GET['inviteCode'])));
    }


    2. readFormParameters@InviteRegisterFormListener


    PHP
    if (isset($_POST['inviteCode'])) $this->inviteCode = StringUtil::trim($_POST['inviteCode']);


    ersetzen durch:


    PHP
    if (isset($_POST['inviteCode'])) {
        WCF::getSession()->unregister('inviteCode');
                
        $this->inviteCode = StringUtil::trim($_POST['inviteCode']);
    }


    3. readParameters@InviteRegisterFormListener ergänzen um:


    PHP
    if (empty($this->inviteCode) && WCF::getSession()->getVar('inviteCode')) {
        $this->inviteCode = WCF::getSession()->getVar('inviteCode');
    }
  • UdoZ

    Added the Label Checking...
  • Ich verstehe den Aufwand mit der Session-Variablen nicht wirklich. Du willst doch nur den Code an das Regstrierungsformular übergeben, oder?

    Dann würde doch Folgendes in readParameters@InviteRegisterFormListener ausreichen:

    Code
    if (!empty($_GET['inviteCode'])) {
        $this->inviteCode = strip_tags(StringUtil::trim($_GET['inviteCode']));
    }

    Er steht dann im Formular und bleibt auch bei Fehleingaben erhalten. Da es unterschiedliche Optionen für die Codeeingabe gibt, ließen sich die einzelnen Fälle auch einfacher berücksichtigen.

  • UdoZ

    Added the Label Implemented
  • UdoZ

    Removed the Label Checking...