PHP Weiterleiten auf andere Seinte

Adriano10

Bekanntes Mitglied
PHP:
echo "<a href= './test.php?key=" . "$key'> hier clicken </a>";

mein Ziel ist, wenn irgendwas passiert, muss auf andere Seite weitergeleitet werden. Ich will php von html trennen. Was für bessere Lösungen gibt für diese Code.

header("Location: ./test.php?key=" . $key) hat leider nicht funktioniert.
 

Thallius

Top Contributor
Verstehe das Problem auch nicht richtig. Die Registrierung erfolgt im backend also kann diese dann auch die entsprechende Seite aufrufen. Dafür braucht es keinen link in html
 

Adriano10

Bekanntes Mitglied
Verstehe das Problem auch nicht richtig. Die Registrierung erfolgt im backend also kann diese dann auch die entsprechende Seite aufrufen. Dafür braucht es keinen link in html
Also auf die test.php muss der Nutzer nach der erfolgreichen Registrierung bestätigen. Da ich mit xamp arbeite, kann ich nicht email schicken.. Alternativ möchte ich, dass der Nutzer auf diese Seite weitergeleitet wird
 

Thallius

Top Contributor
Also nochmal langsam:

Du hast eine Registrierung-Seite, die Wahrscheinlich ein Formular <form> enthält. Dieses wird mit Submit abgeschickt. Die Seite die dann mit dem submit aufgerufen wird gibst du im <form> unter action an. Das kann und sollte eine ganz andere Seite sein als die, die das Formular erstellt hat. Auf dieser Seite prüfst du dann die Registrierung und machst danach was auch immer du willst. Meinetwegen auch einen header(). Dieser geht aber nur, wenn vorher nichts an den Browser ausgegeben wurde. Also kein echo oder ähnliches. Was aber auch nicht nötig ist auf der Seite die einfach nur die Registrieungsdaten bearbeitet.
 

Adriano10

Bekanntes Mitglied
Also nochmal langsam:

Du hast eine Registrierung-Seite, die Wahrscheinlich ein Formular <form> enthält. Dieses wird mit Submit abgeschickt. Die Seite die dann mit dem submit aufgerufen wird gibst du im <form> unter action an. Das kann und sollte eine ganz andere Seite sein als die, die das Formular erstellt hat. Auf dieser Seite prüfst du dann die Registrierung und machst danach was auch immer du willst. Meinetwegen auch einen header(). Dieser geht aber nur, wenn vorher nichts an den Browser ausgegeben wurde. Also kein echo oder ähnliches. Was aber auch nicht nötig ist auf der Seite die einfach nur die Registrieungsdaten bearbeitet.
PHP:
<?php include "php/head.php"; ?>
<?php include "php/header.php"; ?>

<div class="aside"></div>
<div class="section">

    <h1 class="title">Registration</h1>
  
     <?php
        if (!isset($SchachfibelDAO)) {
        $SchachfibelDAO = new DBSchachfibelDAOImpl();
        }
  
      if ($_SESSION["loggedUserId"] !== null) {
        $id = $SchachfibelDAO->getLoggedUser();
      }
  
        if($id > 0){ ?>
        <div class="loggedUser">
  <?php $userId = $_SESSION["loggedUserId"];
        $user = $SchachfibelDAO->getUser($userId);
        if ($user == null){?>
        <p>Fehler: Nutzer*in konnte nicht geladen werden</p>
  <?php } else {
        if ($user["name"] == null || $user["image"] == null || $user["name"] == "" || $user["image"] == "") { ?>
        <p>Fehler: Daten der Nutzer*in konnten nicht geladen werden</p>
  <?php } else {  ?>
        <figure class="nutzerBild">
        <div class="img-center">
        <img class="home-user-picture" src="<?php echo htmlspecialchars($user["image"]) ?>" alt="profilbild" />
        </div>
        <p>Hallo <?php echo htmlspecialchars($user["name"]) ?>!</p>
        </figure>
        </div>
  <?php }
        }
        } else {?>
          
     <div class="registrierung-container">
         <script src="script/registration.js"></script>
         <div class="register-feld">
             <!--Felder für Dateneingabe-->
         <form method="post" enctype="multipart/form-data" accept="image/gif,image/jpeg,image/png">
                   <div class="label">
                   <label class = "label" for="nutzerName">Nutzername</label>
                   </div>
                   <?php $name = (isset($_POST["nutzername"]) && is_string($_POST["nutzername"])) ? $_POST["nutzername"] : "";?>
                   <input id="nutzerName" class="input" type="text"  name="nutzername" onkeyup="showHint(this.value)" placeholder="Nutzername"
                   value = "<?php echo $name; ?>" required/>
                   <p id="ajax"></p>
                   <div class="label">
                   <label for="email">E-Mail</label>
                   </div>
                   <?php $email = (isset($_POST["email"]) && is_string($_POST["email"])) ? $_POST["email"] : "";?>
                   <input id="email" class="input" type="text" name="email" placeholder="E-Mail" value = "<?php echo $email;?>" required/>
                   <div class="label"> <label id="passVal" for="nutzerPassword">Password &nbsp; &nbsp; &nbsp; &nbsp;
                   <!--Rote XXX über dem Passwordfeld-->
                   <div id="message" class = "mess">
                   <p id="letter" class="invalid"></p>  &nbsp;
                   <p id="val" class="invalid"></p> &nbsp;
                   <p id="length" class="invalid"></p>
                   </div>
                   </label>
                   </div>
                   <?php $password = (isset($_POST["password"]) && is_string($_POST["password"])) ? $_POST["password"] : "";?>
                   <input id="nutzerPassword" onmousedown="myFunction()"  class="input" type="password" name="password" placeholder="Password" value = "<?php echo $password; ?>" required/>
                   <!--Definitionen von alle X über dem Passwordfeld-->
                   <div id="textInfo" class="passInfo">
                   <ul>
                   <li id="lInf" class="letterInfo"><p >Erstes Zeichen darf nur Buchstaben sein!</p></li>
                   <li id="mInf" class="valInfo"><p >darf nicht mindestens als 3 Buchstaben und höchstens als 10 Buchstaben sein!</p></li>
                   <li id="vInf" class="lengthInfo"><p >Weniger als 7 Zeichen ist zwar ok, aber für Passwort ist schwach!</p></li></ul>
                   </div>
                   <div class="label">
                   <label for="confrimePassword">Password wiederholen
                   <!--Rote X über dem Confrimepasswordfeld-->
                   <div id="message1" class = "mess1">
                   <p id="confrime" class="invalid2">
                   </div>
                   </label>
                   </div>
                   <!--Definition vom roten X-->
                   <div id="conTextInf" class="conInfo">
                   <p id="cInf1" class="confrInfo">Passwörter müssen übereinstimmen</p>
                   </div>
                   <?php $passwordRepeat = (isset($_POST["passwordRepeat"]) && is_string($_POST["passwordRepeat"])) ? $_POST["passwordRepeat"] : "";?>
                   <input id="confrimePassword" class="input" onmousedown="myFunction()"  type="password" name="passwordRepeat" placeholder="Password wiederholen" value =
                   "<?php echo $passwordRepeat; ?>" required/>
          
                   <!--Bild hochladen-->
                   <div id="fileHochladen">
                   <label>Profilbild auswählen
                   <input type="file" name="files" >
                   </label>
                   </div>
                   <!--AGB checkbox-->
                   <?php $agb = (isset($_POST["AGB"]) && is_string($_POST["AGB"])) ? $_POST["AGB"] : "";?>
                   <label class ="labAGB" for="agb">Ich akzeptiere die AGB </label><input type="checkbox" id="agb" class = "agb" name = "AGB" value = "ja"
                   <?php  if ($agb != "") {echo "checked=\"checked\" ";}?> required/>
          
                   <!--Button für Registrierung-->
                   <div class="btn-box">
                   <input class="buttonReg" type="submit" name="createUser" value="Registrieren">
                   </div>
         </form>
          
                  <!--Button für Anmelden-->
                  <div class="btn-tag">
                  <a href="./anmelden.php">Bei Schachfibel anmelden</a>
                  </div><br/>   
     <?php
                    
            /*Abfrage, ob Post existiert*/
            if (array_key_exists("createUser", $_POST)) {
                $username = $_POST["nutzername"];
                $email = $_POST["email"];
                $password = $_POST["password"];
                $passwordRepeat = $_POST["passwordRepeat"];
                $key = sha1(uniqid());
                $registrationSuccessful = false;
                /*Image hochladen*/
                $file_name = pathinfo($_FILES["files"]["name"], PATHINFO_FILENAME);
                $file_extension = strtolower(pathinfo($_FILES["files"]["name"], PATHINFO_EXTENSION));
                $upload_folder = "php/images/";
                if(is_dir($upload_folder) == false){ ?>
                <div class="fehlerRegistration">
                <p>
                Folder existiert nicht: Das Bild kann nicht geladen werden!
                </p>
                </div>
       <?php    }
                $update_path = $upload_folder.$file_name.'.'.$file_extension;
                /*Überprüfen, ob ein Bild hochgeladen wurde*/
                if($agb == "ja"){
                if (isset($_FILES["files"]) && $_FILES["files"]["size"] > Utils::MB * 20) { ?>
                <div class="fehlerRegistration">
                <p>
                Es dürfen nur Dateien kleiner als 20MB hochgeladen werden!;
                </p>
                </div>
        <?php   }else if(isset($_FILES["files"]) && $file_name !== ""){
                /*Bild wird an den angegebenen Ort verschoben*/
                move_uploaded_file($_FILES["files"]["tmp_name"], $update_path);
                ?>
                <div class="fehlerRegistration">
                <p>
        <?php         
                /*Erfolgreich registrierter Nutzer wird in der Datenbank gespeichert */
                $registrationSuccessful = $SchachfibelDAO->registerUser($username, $email, $password, $passwordRepeat, $update_path, $agb, $key); ?>
                </p>
                </div>
        <?php   }else{
                /*Wenn das Bild nicht hochgeladen wird, wird dem Nutzer Standardbild zugewiesen*/
                $standardImage = 'php/images/standardImage.jpg';
                if(!file_exists($standardImage)){ ?>
                <div class="fehlerRegistration">
                <p>
                System Fehler: Das Bild kann nicht geladen werden!
                </p>
                </div>
        <?php   } else{ ?>
                <div class="fehlerRegistration">
                <p>
        <?php   $registrationSuccessful = $SchachfibelDAO->registerUser($username, $email, $password, $passwordRepeat, $standardImage, $agb, $key);
                }?>
                </p>
                </div>
        <?php   }
                }else{ ?>
                <div class="fehlerRegistration">
                <p>
                AGB bitte akzeptieren!
                </p>
                </div> 
        <?php   } 
                /* Nach der erfolgreichen Registrierung wird auf die Anmeldeseite weitergeleitet */
                if ($registrationSuccessful) {
                echo "Registrierung war erfolgreich";
                    echo "<a href= './test.php?key=" . "$key'> aaa </a>";
                //$url = "./anmelden.php";
                //echo ("<script>location.href='$url'</script>");
                } else {?>
                <div class="fehlerRegistration">
                <p>
                Registrierung war nicht erfolgreich;
                </p>
                </div>
        <?php   }
            }
            } ?>
                </div>
          </div>
      </div>
         <script>
               var my = document.getElementById("nutzerName");
               var lowerCaseLetters = /[a-z]/g;
               var upperCaseLetters = /[A-Z]/g;
               function showHint(str) {
               if(str.match(lowerCaseLetters) || str.match(upperCaseLetters) ||
               str.value.length >= 4 && str.value.length < 11){
               var xhttp;
               if (str.length == 0) {
               document.getElementById("ajax").innerHTML = "";
               return;
               }
               xhttp = new XMLHttpRequest();
               xhttp.onreadystatechange = function() {
               if (this.readyState == 4 && this.status == 200) {
               document.getElementById("ajax").innerHTML = this.responseText;
               }
               };
               xhttp.open("GET", "./ajax.php?q=" + encodeURIComponent(str), true);
               xhttp.send();
               }
               }
        </script>
<?php include "php/footer.php"; ?>
hier meine Code Zeile von 179 bis 181.. Am Anfang hatte ich das alles mit Javascript gemacht, aber hat sich dann rausgestellt, wenn man script in Browser ausstellt, funktioniert nicht mehr, daher möchte ich diese Weiterleiten auf andere Seite mit php ausführen lassen.
 

Thallius

Top Contributor
Also ganz ehrlich. Mach das komplett neu. Das ist ja ein grauenhaftes Kauderwelsch aus HTML/JS und PHP

Mach dir eine html Datei mit den HTML Daten, eine CSS Datei mit den Styles, eine js Datei mit dem Javascript Teil und eine oder mehrere PHP Seiten für das Backend.
 

Adriano10

Bekanntes Mitglied
Also ganz ehrlich. Mach das komplett neu. Das ist ja ein grauenhaftes Kauderwelsch aus HTML/JS und PHP

Mach dir eine html Datei mit den HTML Daten, eine CSS Datei mit den Styles, eine js Datei mit dem Javascript Teil und eine oder mehrere PHP Seiten für das Backend.
Hab alles genauso, das ist nur test für mich... Ich möchte nur dieses Problem lösen
 
M

Mart

Gast
ich habs ausprobiert mit
Java:
<?php
$key="hi";
echo "<a href= './test.php?key=" . "$key'> hier clicken </a>";
?>
dieser link leitet mich auch uaf test.php weiter ... ich denke mal dass bei dir irgendwo anders etwas nicht stimmt... der link passt... die ressource wird auch mitgegeben von deinem key

es ist halt mega veriwrrend alles.. du weist wie ein ajax call geht und hast trotzdemm so viel in der datei

meine vermutung ist wenn du die seite inspizierst ist dass dein key leer ist und du dadurch keine korrekte uri hast da deine ressource falsch ist
 
Zuletzt bearbeitet von einem Moderator:

Adriano10

Bekanntes Mitglied
ich habs ausprobiert mit
Java:
<?php
$key="hi";
echo "<a href= './test.php?key=" . "$key'> hier clicken </a>";
?>
dieser link leitet mich auch uaf test.php weiter ... ich denke mal dass bei dir irgendwo anders etwas nicht stimmt... der link passt... die ressource wird auch mitgegeben von deinem key

es ist halt mega veriwrrend alles.. du weist wie ein ajax call geht und hast trotzdemm so viel in der datei

meine vermutung ist wenn du die seite inspizierst ist dass dein key leer ist und du dadurch keine korrekte uri hast da deine ressource falsch ist
Link funktionierte am Anfang an, ich wollte in dieser Zeile php und html voneinander trennen. Ich hab nach einer Lösung gefragt, zu der in echo keine HTML elemente existieren.
 
K

kneitzel

Gast
Ich muss gestehen, dass ich nicht so richtig verstehe, was Du denn nun genau machen willst. Daher gehe ich auf die einzelnen Dinge nicht zu sehr ein und bleibe allgemein:

a) Wenn Du in PHP diverse Dinge trennen willst, dann würde ich vermuten, dass es da ähnliche Lösungen gibt wie in anderen Sprachen. Mir fällt hier z.B. schlicht eine Template Engine ein. Eine schnelle, kurze Suche hat gezeigt; Ja, gibt es auch in PHP, z.B. http://phptal.org/
Generell ist dabei halt das Ziel, typische Design Pattern aufzubauen und so z.B. eine Trennung in Model, View und Controller zu bekommen.

b) Auch bei "nur Test für mich" würde ich dazu raten, sauber zu arbeiten. Denn so hast Du etwas, dass Du einfacher überblicken kannst, Du kannst Teile einfacher übernehmen, du kannst später einfacher darauf zurück kommen und natürlich kann sowas wachsen: Das Erste geht? Dann probiert man doch gleich noch den einen oder anderen Punkt ebenfalls ...

Das aber einfach nur als mein Blick von außen in der Hoffnung, dass es in irgend einer Weise hilfreich ist.
 

Adriano10

Bekanntes Mitglied
Ich muss gestehen, dass ich nicht so richtig verstehe, was Du denn nun genau machen willst. Daher gehe ich auf die einzelnen Dinge nicht zu sehr ein und bleibe allgemein:

a) Wenn Du in PHP diverse Dinge trennen willst, dann würde ich vermuten, dass es da ähnliche Lösungen gibt wie in anderen Sprachen. Mir fällt hier z.B. schlicht eine Template Engine ein. Eine schnelle, kurze Suche hat gezeigt; Ja, gibt es auch in PHP, z.B. http://phptal.org/
Generell ist dabei halt das Ziel, typische Design Pattern aufzubauen und so z.B. eine Trennung in Model, View und Controller zu bekommen.

b) Auch bei "nur Test für mich" würde ich dazu raten, sauber zu arbeiten. Denn so hast Du etwas, dass Du einfacher überblicken kannst, Du kannst Teile einfacher übernehmen, du kannst später einfacher darauf zurück kommen und natürlich kann sowas wachsen: Das Erste geht? Dann probiert man doch gleich noch den einen oder anderen Punkt ebenfalls ...

Das aber einfach nur als mein Blick von außen in der Hoffnung, dass es in irgend einer Weise hilfreich ist.
Genau wollte ich in dieser Code echo "<a href= './test.php?key=" . "$key'> hier clicken /a>"; php von html trennen, genau gesagt in echo keine html elemente… Außerdem hab gefragt, ob es irgendwas alternatives von header(“Location:”) gibt, die den Nutzer auf diese Seite ('./test.php?key=" . "$key') weiterleitet.
 
K

kneitzel

Gast
Genau wollte ich in dieser Code echo "<a href= './test.php?key=" . "$key'> hier clicken /a>"; php von html trennen,
Und genau da kommen dann Templates ins Spiel:
Du hast dann ein Template. Da ist dann kein PHP Code enthalten. (Aber dafür ggf. Anweisungen für die Template Engine). Der Controller erstellt ein Model und gibt es mit dem Template an die Template Engine. Die Template Engine baut dann aus Template und Model die Seite.
 

mrBrown

Super-Moderator
Mitarbeiter
PHP:
<?php
header("Status: 301 Moved Permanently");
header("Location: http://google.de");
exit;
?>
Mit 301 sollte man innerhalb von Applikationen allerdings aufpassen, damit fängt man sich schnell mal Schwierigkeiten ein…

(Abgesehen davon ist der Thread schon ein Jahr alt gewesen, und niemand mag es, wenn Leichen geweckt werden :) )
 

wer112

Top Contributor
PHP:
echo "<a href= './test.php?key=" . "$key'> hier clicken </a>";

mein Ziel ist, wenn irgendwas passiert, muss auf andere Seite weitergeleitet werden. Ich will php von html trennen. Was für bessere Lösungen gibt für diese Code.

header("Location: ./test.php?key=" . $key) hat leider nicht funktioniert.
Benutze lieber die Echo Variante mit: echo"<>;" und darein meta, java script und wie andere Programmiersprachen...

Ich leite das so weiter(erfolgreich): Also so war es: echo "<meta http-equiv="refresh" content="0; URL=http://www.domain.de">";
 

Neue Themen


Oben