Я довольно новичок в сессиях.
У меня есть сайт объявлений, и пользователи могут выбрать "РЕДАКТИРОВАТЬ" свои объявления.
Все, что им нужно ввести, - это пароль, который они выбралипри создании объявления.
На странице «edit.php», если пароль правильный, отображаются классифицированные данные.Существует инструмент загрузки изображений, который перезагружает страницу, но в то же время загружает изображение и выполняет предварительный просмотр для пользователя.
Проблема в том, что при загрузке изображения я не хочу, чтобы страницапопросить пароль еще раз.(это потому, что страница перезагружается) Не очень приятно, если для каждой загрузки картинки требуется пароль.
Поэтому я установил переменную сеанса следующим образом:
if($pass==$row['pass']){ $_SESSION['correct_pass']=1; }
, затем в edit.php наперезагрузите, я проверяю следующее условие:
if($pass==$row['pass'] || $_SESSION['correct_pass']==1){
EDIT AD HERE
}
Проблема (БОЛЬШАЯ ПРОБЛЕМА) заключается в том, что, как только пользователь вводит правильный пароль, создается СЕССИЯ ['correct_pass'] и устанавливается на 1.
После этого пользователь может нажать «назад» в браузере и ввести другой идентификатор объявления nr в URL, и PHP-сессия будет считать, что пароль все еще в порядке.
Так, другими словами, можноизмените классификацию других людей, если вы поймете это.
Как это решить?
Если вам нужно больше информации, дайте мне знать ...
Ниже приведены несколько строккод, который далее описывает файл edit.php (не тестировался):
//FIRST VISIT TO "EDIT.PHP?ad_id=ID_OF_CLASSIFIED_HERE"
if($todo==0){
//User is shown 2 radios, and a password form, and choses either to remove classified, or change classified
}
//REMOVE CLASSIFIED
if($todo==1){
//User has chosen to remove a classified
if($pass==$row['pass']){
//DELETE CLASSIFIED
}
if($pass!=$row['pass']){
//SHOW WRONG PASSWORD WARNING
}
}
if($todo==2){
//User has chosen to change a classified
if($pass==$row['pass'] || $_SESSION['correct_pass']==1){
if(!isset($_SESSION['correct_pass'])){
$_SESSION['correct_pass']=1;
}
//EDIT AD HERE
}
else {
//SHOW WRONG PASSWORD WARNING
}
}
Спасибо