Aus Ihrer Frage ist nicht ganz klar, was Sie wollen, daher spalte ich meine Antwort.
Einstellung des Session-Variable von URL
Soweit ein Ich weiß, gibt es keine direkte Möglichkeit Session-Variablen von einer URL zu setzen. Dies würde das gesamte Sitzungskonzept als serverseitige Daten beeinträchtigen, auf die nur durch eine Sitzungs-ID Bezug genommen wird.
Angenommen, Sie haben ein Skript users.php. Sie könnten im Grunde http://[...]/account/users.php?username=[...]
anrufen. Mit dem folgenden Skript können Sie die Variable $_GET
superglobal der $_SESSION
superglobal zuweisen.
<?php
session_start();
$_SESSION['username'] = $_GET['username']
[...] //whatever you'll want to do
?>
Mit URL umschreibt Sie die URL zu http://[...]/account/users/[...]
vereinfachen könnte.
Wie auch immer, Sie sollten sicherstellen, dass Sie wissen, was Sie tun. Ich sehe die Vorzüge von $_SESSION
hier nicht, wenn Sie den Benutzernamen trotzdem weitergeben. Und Sie möchten möglicherweise eine Eingabe Validierung durchführen. Dies sollte keinen Zugriff auf Ressourcen ermöglichen, auf die der jeweilige Benutzer Zugriff haben sollte.
Zeigen Sie einfach ein Benutzer Seite
Wenn Sie würde nur Seite einen Benutzer zeigen möchten, dass Sie nicht wirklich die $_SESSION
superglobal brauchen, aber nur die $_GET
in der Art, wie ich oben geschrieben habe. Betrachten Sie das folgende Skript
<?php
$user = get_user_by_name($_GET['username']);
display_user_page($user);
?>
Keine Notwendigkeit für eine Sitzung. Laden Sie einfach die Benutzerdaten aus der Datenbank und drucken Sie die Benutzerseite aus.
Vorbei an den Benutzername auf eine URL
Basierend auf diesem Zitat
Die Variablen in der URL nicht alles tun würden, wäre es für die Optik nur da sein.
Ich denke, das ist eher, was Sie tun möchten.Und wie Sie diese Art erreichen können, hängt davon ab.
Wenn Sie den Link irgendwo in Ihrem PHP-Skript generieren, ist das ganz einfach. Fügen Sie einfach die $_SESSION['username']
der URL in der Verknüpfung hinzu und erstellen Sie die entsprechende Rewrite-Regel, die Sie an account/users
umleitet.
Es ist etwas komplizierter, wenn Sie http://[...]/account/users
anrufen und den Browser auf http://[...]/account/users/username
verschieben können. Zuerst müssen Sie eine Rewrite-Regel haben, die http://[...]/account/users/username
auf eine Art von http://[...]/account/users.php?username=username
zeigt. Wenn der Benutzername leer ist, erhalten Sie den aktuellen Benutzernamen von $_SESSION
, erstellen Sie einen <meta http-equiv="refresh" content="0; URL=http://[...]/account/users/$username">
Tag, um den Browser auf die richtige Adresse zu verweisen. Wenn der Benutzername nicht leer ist, zeigen Sie nur die Benutzerseite an.
Ich weiß, dass dies mit $ _GET getan werden kann, aber wie würde ich das mit einer Sitzungsvariablen tun?
Da die Variable überhaupt nicht verwendet wird, könnte man die ganze Sache ohne die $_GET
überhaupt einsetzen. Sie werden zwei Skripte haben
// users_redirect.php
<?php
start_session();
$username = $_SESSION['username'];
echo "<meta http-equiv='refresh' content='0; URL=http://[...]/account/users/$username'>";
?>
und die zweite der Seite Benutzer zeigen
<?php
$user = get_user_by_name($_SESSION['username']);
display_user_page($user);
?>
Natürlich werden müssen Sie die richtige URL Rewrite-Regeln haben in Ihrem Server einrichten die anrufen korrekte Skripte.
nur eine Randnotiz
Sie sollten die verschiedenen Konzepte auswendig lernen. GET
und SESSION
sind nicht nur verschieden, sondern grundverschieden. Es sieht so aus, als ob du hier ziemlich viel durcheinander gebracht hättest und du solltest die Grundlagen richtig haben, um die Dinge nicht total zu vermasseln.
Share-Code, wo Sie URL erstellen? – C2486
Ich bin mir nicht sicher, was du meinst, derzeit verlinke ich direkt zu http: // localhost/account/users – EthanLewis
Sie müssen 2 Dinge tun: 1. In dem Code, wo Sie die URL behandeln, ignorieren Sie den Teil nach '/ Benutzer/', wie es nur kosmetischen ist, und 2. in dem Code, wo Sie die URL generieren, fügen Sie den Namen des Benutzers hinzu. Wir können Ihnen nicht helfen, wenn Sie nicht den Code zeigen, wo Sie diese 2 Dinge tun. – Nanne