Ich habe eine Seite, die ich bei mysite.com/page
PHP senden POST-Daten neu geschrieben URL
Auf dieser Seite befindet sich bin der Entwicklung der Benutzer einen Benutzernamen und ein Passwort eingeben:
<form method="post">
<div class='form-group'>
<label for='username'>Username</label>
<input class='form-control' id='spreadsheet-form-username' name='username' placeholder='Username'>
</div>
<div class='form-group'>
<label for='password'>Password (optional - required to edit)</label>
<input type='password' class='form-control' name='password' id='spreadsheet-form-password' placeholder='Password'>
</div>
<button type='submit' class='btn btn-default'>Submit</button>
</form>
Wenn der Benutzer klickt einreichen , sie die Daten BEITRÄGE und die URL neu geschrieben mysite.com/page/exampleUser
oder dem Äquivalent von mysite.com/page?username=exampleUser
wenn der Benutzer nur einen Benutzernamen nachzuschlagen einreicht, ich möchte, dass sie nur in der Lage sein, die Daten auf mysite.com/page/exampleUser
anzuzeigen, und wenn sie auch ein korrektes Passwort einreichen, können sie die Daten bearbeiten.
Ich kann die richtige URL bekommen, aber ich habe Schwierigkeiten zu finden, wie man überprüft, ob der Benutzername und das Passwort beide gesendet wurden (und was ihre Werte sind) auf der mysite.com/page/exampleUser
Seite. Ich möchte in der Lage sein zu sagen, ob sie die Daten auf dieser Seite bearbeiten dürfen oder nicht.
habe ich versucht, diesen Code:
$mode = "view";
if (isset($_POST["password"])) {
if (hashOfPassword matches password submitted) {
$mode = "edit";
}
}
if (isset($_POST["username"])) {
$username = $_POST["username"];
header("Location: /spreadsheet/" . $username);
}
aber ich kann nicht scheinen zu können, die $ _POST [ „password“] Daten während der umgeschriebenen URL zu erhalten. Es ist nur verfügbar, bevor die URL neu geschrieben wird.
Ich muss nicht unbedingt in der Lage sein, das Passwort zu senden, aber ich möchte in der Lage sein, ein paar Informationen zu senden, die mich darüber informieren, ob die Seite sichtbar oder editierbar sein soll. Ich kann es auch nicht über die URL senden (Beispiel: mysite.com/page/exampleUser/edit
), da ich nicht möchte, dass Benutzer die Daten anderer Benutzer bearbeiten können, indem sie einfach die URL ändern.
Hier ist, wie ich mit url befasse umschreibt:
// Trim leading slashes
$path = ltrim($_SERVER['REQUEST_URI'], '/');
// Split url on slashes
$elements = explode('/', $path);
if ($elements[0] == "page" && sizeof($elements) == 1) {
// do nothing, there wasn't a username submitted
}
else {
switch(array_shift($elements))
{
case 'page':
echo "username: " . $elements[1];
echo "password: " /* not sure what to put here*/;
break;
default:
header("/404.php");
break;
}
}
und meine .htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ 404.php [L]
Jede Hilfe wäre sehr geschätzt!
Sie könnten ein 'session' beginnen, das Passwort vor der URL-Rewrite bestätigen und der Sitzung eine Art‚Genehmigung‘geben, die dann nach der URL-Rewrite überprüft wird. – Luke