Добрый вечер! Подскажите пожалуйста, возможно ли средствами php запретить перезапись значений в сессии. Например есть переменная которая POSTом передается на сервер, где заноситься в сессию: PHP: if (!isset($_SESSION['tableName'])) { $_SESSION['tableName'] = $_POST['btn_addCart']; } Значение в PHP: $_POST['btn_addCart']; - каждый раз разное (меняется с обновлением страницы), а мне нужно что бы PHP: $_SESSION['tableName'] единоразово получило это значение (то есть при самом первом заходе посетителя на сайт) и больше не перезаписывалось, до тех пор пока сама по себе сессия не будет удалена. Заранее благодарен за любую помощь!
PHP: $tablename = $_SESSION['tableName']; if (!isset($tablename)) { $_SESSION['tableName'] = $_POST['btn_addCart']; } if ($tablename) { unset($tablename); } Это имеете ввиду?
Я к сожалению, пока еще, очень слаб в пхп-шном синтаксисе, и вот так с лету не могу сказать то это или не то. Могу позволить себе наглость и попросить Вас растолковать строчки которые здесь написаны?
получается если есть сессия то сбрасывает ее, а если ее нету то устанавливает.... --- Добавлено --- или какое вы действие хотите, если сессия уже есть?
Получается в моей голове это выглядит так - если сессии PHP: $_SESSION['tableName'] нет, то нужно записать в нее значение: PHP: $_POST['btn_addCart']; , а если есть то запретить дальнейшую ее перезапись
PHP: $tablename = $_SESSION['tableName']; if(isset($tablename)) { }else{$_SESSION['tableName'] = $_POST['btn_addCart'];}
Я попробую перевести все выше написанное на "людской" язык: 1) Объявляем переменную "tablename"; 2) Присваиваем это переменной значение взятое из сессии с именем "tableName"; 3) Если переменная "tablename" имеет установленное значение то действий не требуется; 4) В противном случае записать в сессию с именем "tableName", переменную которую я ранее передал на сервер POSTом со значением "btn_addCart". Поправите пожалуйста если я где-то ошибся.
PHP: session_start(); // Создается файл сессии на сервере. Пока пустой файл. if (!isset($_SESSION["tableName"])){ // Срабатывает условие : Если нет переменной $_SESSION["tableName"], то ... $_SESSION["tableName"] = $_POST["btn_addCart"]; //...создаем переменную $_SESSION["tableName"] и кладём в неё значение $_POST["btn_addCart"] } echo ("Table name is ".$_SESSION["tableName"]); // Будет всегда выводить первое значение которое было получено после session_start(), т.е. после создания сессии Если сессия создана, то новая создаваться не будет. Этот код то, что тебе нужно
Вы верно думали, session_start(); в конфиге прописан Вот здесь проблемка, я сейчас использую именно этот код, точь в точь. Но сессия перезаписывается. Объясню как это происходит: 1) В сессию $_SESSION["tableName"] попадает значение $_POST["btn_addCart"]; 2) Записанное значение в $_SESSION["tableName"] = имя таблицы с которой в дальнейшем работает пользователь, а именно при нажатии на кнопку срабатывает фуричь, который выводит из таблицы с именем $_SESSION["tableName"] все значения, всех полей; 3) А дальше происходит беда, фурычь срабатывает только один раз, то есть он сработал, вывел все из таблицы, потом я обновляю страницу и все ломается, значение в $_SESSION["tableName"] перезаписывается, причем в него попадает весь массив данных которые у меня фурычем выводятся на страницу, и вывод данных само-собой перестает работать, ибо в сессии уже не одно значение с именем таблицы, а весь массив данных который выводиться из этой таблицы; И я правда не понимаю почему это происходит, уже 3 дня пытаюсь разобраться с этим и нечего не выходит. О сюда появилась идея сделать небольшой "костыль", то есть сделать то о чем я спрашивал, запретить перезапись сессии если в ней уже что-то есть. По этому хотел бы уточнить, код который мне ранее написал @hust0: PHP: $tablename = $_SESSION['tableName']; if(isset($tablename)) { }else{$_SESSION['tableName'] = $_POST['btn_addCart'];} поможет мне с моей затеей или нет?
@smartCreate вы попробовали сделать как я писал? PHP: $tablename = $_SESSION['tableName']; if(isset($tablename)) { }else{$_SESSION['tableName'] = $_POST['btn_addCart'];}
@hust0 разве не надо isset натравить на $_SESSION['tableName']? Всю тему не читал, но выглядит не логично.
нет, он типа на переменную, которая всегда есть, а значение у неё либо есть, либо null, но опять есть =) PHP: if (!isset($_SESSION['tableName']) AND isset($_POST['btn_addCart'])) { $_SESSION['tableName'] = $_POST['btn_addCart']; } и всё, будет работать только один раз.
Ну я как понял у него $_POST['btn_addCart'] никак не может быть пустым, следовательно зачем его писать в if (!.... ?
это пост, он может быть пустым даже случайно =) пусть будет. иначе в таких случаях будет ворнинг. Один раз написал - работает всегда. Хорошо же.
Друзья, всем спасибо за участие, и прошу прощения за беспокойство. Видать с утра на меня снизошло прояснение Все дело было в том что у меня фурычь был криво написан, это именно он перезаписывал мою $_SESSION['tableName'] и заносил туда весь массив который он вытаскивал из таблицы. Я просто создал переменную которой присвоил значение $_SESSION['tableName'] и в фуриче использовал эту переменную, сейчас все отлично работает))))
Наверное вопрос мой не на столько решен, как я сейчас подумал)) Могли бы Вы уточнить что имеете в виду? потому как я пока не совсем понимаю
Понял, спасибо изучу этот момент! У меня на самом деле родился еще один вопрос, хочу позволить себе наглость и воспользоваться моментом Я ранее писал что пока еще слаб в пхп-шнов синтаксисе, Вы не подскажите как мне записать следующее условие: "Если в таблице, в поле "articul" уже имеется значение "123456", то сделать то-то и то-то"
нет. PHP: $rff=mysql_query("select articul from `имя таблицы`"); $lala=mysql_fetch_array($rff); if ($lala["articul"] == "123456") { echo "сделать то-то и то-то"; }else{}
Работает! Спасибо огромное) Можете ответить на последний вопрос?) Можете конечно и послать, потому что уже задолбал вопросами) Возможно ли в пхп, по нажатию на кнопку изменить числовое значение в одном из полей БД? Объясню подробнее: 1) Есть в таблице поле 'number', в нем хранятся только числовые значения (от 1 и до бесконечности); 2) на странице есть кнопка; 3) Нужно что бы при нажатии на эту кнопку, значение в 'number' увеличивалось на +1. Возможно ли это сделать?