2012-03-26 3 views
3

GET - удобный способ опубликовать идентификатор формы, опубликовать идентификатор сайта или любой идентификатор. Однако это небезопасно, потому что он пропускает идентификатор посетителей.

Есть ли какой-либо метод, который я могу использовать, который похож на формат GET, что мне не нужно отправлять форму, но я могу получить идентификатор легко в одно и то же время?

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? 

Что я на самом деле хочу сделать:

В моем случае я хочу разработать несколько формы, каждый из них имеет идентификатор на нем, скажем, Forma, FormB, formC ..

ЕСЛИ я использую get, я определю <form id="myform" method="get" action="verify.php?id="formA"> , так как это небезопасно, как я могу использовать сеанс для этого?

* Ans:. Положить $ _SESSION [ID] = 'FormID' и получить его таким же образом *

Это нормально для формы, но .....

Если я хочу создать страницу с большим количеством ссылок, как я могу добиться использования сеанса? Как связать сеанс со ссылкой? Спасибо.

+2

Это то, что [ '$ _SESSION'] (http://us.php.net/manual/en/book.session.php) для. –

+2

Зависит от того, куда должен идти идентификатор и что вам нужно делать с ним. Вам нужно просто отслеживать на сервере? Или вам это нужно на стороне клиента? Существуют способы скрыть значения на стороне клиента, но ничто на стороне клиента никогда не должно считаться «безопасным». – David

+0

Спасибо, все ваше предложение, у меня есть редактирование моего дела, пожалуйста, загляните в него. –

ответ

2

Метод GET помещает данные в URL-адрес (так, чтобы вы их видели). Метод POST помещает данные в тело запроса, поэтому он не дублируется в адресной строке. Однако вы можете легко узнать содержимое тела запроса с помощью модуля браузера.

Способ GET и POST одинаково безопасен таким образом. Однако, как сказал Алекс, вы можете использовать сессию php, но полезны только для данных, которые пользователь не изменит.

В вашем случае, если вы идентифицировали пользователя с идентификатором и id, вам просто нужно заполнить $ _SESSION ['userid'] (имя переменной произвольно), а затем, когда пользователь отправит его, вы будете возвращать идентификатор пользователя из сеанса.

Edit: Для вашего URL:

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

Вы можете установить маркер системы, которая означает для текущего пользователя вы даете ему хэш, что кажется случайным и позволяет ему выполнять эту услугу. Вы можете поместить этот маркер поколения в начале вашего скрипта:

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 
} 

Затем, когда вы будете генерировать свою страницу (с ссылкой на службу), добавьте маркер в URL, например:

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

Наконец, когда http://mydomain.com?serviceid=1 называется проверять маркер внутренне:

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; 
    } 
} 

Так у вас есть переменная, сообщающее, если вы можете выполнить о r не обслуживание. Тождество livelenght совпадает с сеансом php. Плюс 2 разных пользователя не могут иметь один и тот же токен (в этом простом поколении два пользователя могут использовать один и тот же токен, если они выполняют страницу в одно и то же время). Кроме того, злоумышленник не может подделать токен, потому что он генерируется из источника переменной и солен с солью, которую знает только ваш сайт.

С уважением

+0

спасибо, а как насчет Если я хочу создать страницу с большим количеством ссылок, каждая ссылка перейдет на один и тот же php, но будет ссылаться на идентификатор, реализовать разные вещи? –

+0

Если идентификатор относится к действию, которое вы хотите выполнить, у вас нет выбора, кроме указания его в URL-адресе. Если вас беспокоит то, что любой может вызвать службу с помощью URL-адреса, вы можете реализовать систему токенов, которая позволит пользователям с действительным токеном выполнить ее. См. Мой отредактированный пост, например. – grifos

4

Вы можете использовать $_SESSION для передачи сведений, которые пользователь не может изменить.

+0

Извините, я так зелёный. как использовать сеанс? если в get, я могу определить $ get? id = aaa для каждой ссылки, но как я могу достичь этого в сессии? –

+0

Я предоставляю вам мой сценарий, спасибо –

+0

Я только что добавил ссылку на документ для '$ _SESSION'. – Jon

1

Вы не хотите использовать $ _POST или $ _GET. Используйте $ _SESSION.

+0

Я предоставляю вам мой сценарий, спасибо –

Смежные вопросы