2012-03-26 5 views
3

GET ist eine bequeme Methode, um die Formular-ID, post die Website-ID oder eine ID. Es ist jedoch unsicher, weil es die ID an die Besucher ausgibt.

Gibt es eine Methode, die ich verwenden kann, die ähnlich zu GET-Format ist, dass ich das Formular nicht senden muss, aber ich die ID gleichzeitig abrufen kann?

sorry, i am so green at it. how to use a session ? if use get , i can define 
$get?id=aaa for each link,but how can i achieve it in session? 

Was ich wirklich tun möchte:

In meinem Fall habe ich mehrere Form entwickeln möchten, die jeweils eine ID auf sie hat, sagen Forma, formB, formC ..

WENN ich benutze, werde ich definieren <form id="myform" method="get" action="verify.php?id="formA"> jedoch, da es unsicher ist, wie kann ich Sitzung verwenden, um dies zu tun?

* Am. Legt die $ _SESSION [id] = 'formid' und es auf die gleiche Weise erhalten *

Es ist für ein Formular in Ordnung, aber .....

Wenn ich eine Seite erstellen möchte, die viele Links enthält, wie kann ich die Verwendung einer Sitzung erreichen? Wie kann ich die Sitzung an den Link binden? Vielen Dank.

+2

Dies ist, was [ '$ _SESSION'] (http://us.php.net/manual/en/book.session.php) ist für. –

+2

hängt davon ab, wo diese ID gehen muss und was Sie damit tun müssen. Ist es etwas, das Sie nur auf dem Server verfolgen müssen? Oder brauchen Sie es auf der Client-Seite? Es gibt Möglichkeiten, Werte auf der Clientseite zu verdecken, aber alles, was clientseitig ist, sollte niemals als "sicher" betrachtet werden. – David

+0

Vielen Dank all Ihren Vorschlag, ich habe meinen Fall bearbeiten, bitte werfen Sie einen Blick darauf. –

Antwort

2

Die GET-Methode legte die Daten in die URL (also, warum Sie sie sehen). Die POST-Methode speichert die Daten im Anforderungshauptteil und wird daher nicht in die Adressleiste verschoben. Sie können jedoch den Inhalt des Anfragekörpers mit dem Browser-Modul leicht finden.

Die Methode GET und POST ist auf diese Weise gleichermaßen sicher. Aber wie Alex sagte, Sie könnten die PHP-Sitzung verwenden, sind aber nur nützlich für Daten, die der Benutzer nicht ändern wird.

In Ihrem Fall, wenn Sie den Benutzer mit und ID identifiziert, müssen Sie nur die $ _SESSION ['Benutzer-ID'] füllen (der Variablenname ist beliebig), dann, wenn der Benutzer die für Sie abschicken wird Benutzer-ID aus der Sitzung.

Edit: Für Ihre url:

http://mydomain.com?serviceid=1 call your service number one 

Sie können ein Token-System festgelegt, die für den aktuellen Benutzer meinen Sie ihm einen Hash geben, die zufällig erscheint und ihm erlauben, den Dienst auszuführen. Sie können dieses Token Generation am Anfang des Skripts setzen:

session_start(); // To start php session 
// We check if the current user has a token 
if (isset($_SESSION['usertoken'])) 
{ 
    $token = md5('myubbersalt' . md5(time) ); // The token is a random string (not to random there) 
    $_SESSION['usertoken'] = $token; // The server now have set an action token for the user 
} 

Dann, wenn Sie Ihre Seite generieren (mit Link zum Service), können Sie das Token in der URL hinzufügen, wie folgt aus:

echo 'http://mydomain.com?serviceid=1&tok=' . $_SESSION['usertoken']; 
Schließlich

wenn der http://mydomain.com?serviceid=1 wird Sie das Token genannt intern überprüfen:

session_start(); // This should be added at the begining of your script 
... 
// We check if the usertoken match the service token 
$canExecuteService = false; 
if (isset($_GET['tok'] && isset($_SESSION['usertoken'])) 
{ 
    if ($_GET['tok'] == $_SESSION['usertoken']) 
    { 
     $canExecuteService = true; 
    } 
} 

So haben Sie eine Variable, die Sie sagen, wenn Sie ausführen können, o r nicht der Service. Die Token-Livelength ist die gleiche wie die PHP-Sitzung. Plus 2 unterschiedliche Benutzer können nicht dasselbe Token haben (in dieser einfachen Generation können zwei Benutzer dasselbe Token teilen, wenn sie die Seite genau zur gleichen Zeit ausführen). Außerdem kann ein Angreifer kein Token fälschen, da dieser aus einer variablen Quelle generiert wird und mit einem Salz gesalzen wird, das nur von Ihrer Website bekannt ist.

Grüße

+0

danke, wie wäre es Wenn ich eine Seite erstellen möchte, die viele Links hat, gehen beide Links zum gleichen PHP, aber beziehen sich auf die ID, implementieren verschiedene Dinge? –

+0

Wenn sich die ID auf die Aktion bezieht, die Sie ausführen möchten, haben Sie keine andere Wahl als sie in der URL anzugeben. Wenn Sie sich darüber ärgern, dass jeder den Dienst mit der URL aufrufen kann, können Sie ein Tokensystem implementieren, das nur Personen mit einem gültigen Token erlaubt, es auszuführen. Sehen Sie meinen bearbeiteten Post zum Beispiel. – grifos

4

Sie könnten $_SESSION verwenden, um Details zu übertragen, die der Benutzer nicht ändern kann.

+0

Entschuldigung, ich bin so grün darin. Wie benutzt man eine Sitzung? wenn in get, kann ich $ get? id = aaa für jeden Link definieren, aber wie kann ich es in der Sitzung erreichen? –

+0

Ich biete Ihnen mein Szenario, danke –

+0

Ich habe gerade den Link zum Dokument für '$ _SESSION' hinzugefügt. – Jon

1

Sie möchten nicht $ _POST oder $ _GET verwenden. Bitte benutze $ _SESSION.

+0

Ich biete Ihnen mein Szenario, danke –

Verwandte Themen