![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
tikitiki |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Feldmarschall, спасибо за развёрнутый ответ. Я не думал, что ты ответишь. Про функцию session_register удивил, что устарела. Остальное ясно, хотя тоже новое почерпнул. Про то, что логины не надо md5 обрабатывать-тоже оказалось для меня открытием. В общем спасибо. Мне надо всё это будет учесть.
Насчёт того, что проверяю ли я, что пользователь зарегистрирован, который кладёт товар в корзину-да я проверяю-ищу в бд логин (это мое собственное решение было, может не правильно). Если логина нет-значит не регистрировался пользователь. Для логинов создал таблицу бд-с логинами, паролями в MD5, другой информацией-e-mail и др. В этой таблице и делаю поиск. Да. Всё-таки спрошу. Можно ли страницы связать методом POST-через формы или способом без отправки формы-при этом в скрытом поле передать логин пользователя и на каждой странице проверять это поле для того, чтоб знать какой пользователь зашёл на страницу (опять же способ отчасти мой, может не верный). В общем неувязок много у меня. Прошу помочь распутать. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: -2 Всего: 32 |
Поправь меня, если я ошибаюсь. Ты хочешь сказать, что берешь из сессии логин, проверяешь по базе, и если такой логин в базе есть - добавляешь в корзину? И этот код работает даже после удаления сессии? А если вместо проверки по базе просто вывести на экран логин - он выведется? А ты уверен, что код проверки по БД у тебя правильный? А то у начинающих много разных хороших способов проверки, таких, например, как $result=mysql_query(); if ($result) echo "логин есть!"; Нет, нельзя. во-первых, потому, что страницы надо связывать методом GET - он для этого и предназначен. Во-вторых, потому, что логин нельзя передавать от пользователя. Логин должен быть только на сервере. Для этого и существуют сессии -чтобы хранить данные на сервере А неувязки давай сюда. Я как раз специализируюсь на их распутывании. Меня, в частности, интересует, что именно неправильного было в работе первого кода от Anarki |
|||
|
||||
tikitiki |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Feldmarschall, ты не ошибся. Код именно такой, как ты говоришь. И работает после удаления сессии. Логин тоже выводится на страницу. Я много раз проверял при тестировании. И код проверки по бд-я думаю -правильный.
Про то, что логин надо на сервере хранить-понятно. Но почему ты говоришь, что при этом нельзя использовать метод POST? Я сначала авторизую пользователя на сайте с помощью проверки есть ли логин в бд, затем уже сохраняю в переменную сессии логин и затем можно передать в скрытом поле методом POST формы или ещё как-то (передать переменную сессии от страницы к странице видимо не проблема). Насчёт первого кода Anarki - код я понял, он мне понятен. Извиняюсь, что не написал подробно сразу. Но я его когда тестировал в отдельном скрипте, то при вводе логина происходил переход на ту же страницу с вводом логина. Видимо так и надо-пользователь вошёл, а форма авторизации осталась. Но дело в том, что я разными способами не смог добиться, чтоб увидеть на странице ссылки на главную страницу, на форму и на выход. Редирект я убрал в качестве теста-после этого появились данные ссылки, но логика работы скрипта стала не совсем такой, как должно быть, хотя похоже. Здесь описывать полностью работу скрипта видимо долго. Меня сильно удивило-но я не понял, что не так. |
|||
|
||||
Anarki |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 14.3.2005 Репутация: 1 Всего: 11 |
tikitiki,
было бы намного проще, действительно, не строить туманные догадки, а посмотреть исходный код, который работает не так как надо. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: -2 Всего: 32 |
Так.
Ты хочешь сказать, что после убиения сессии логин все равно выводится? С этого, пожалуй, и надо начинать, отбросив все остальное в сторону, как лишнее. вообще-то, это очень странно. Выходит, что сессия не убивается. Скажи, ты сам можешь написать код, демонстрирующий такой эффект? Чтобы в нем не было ничего лишнего, а только 4 шага - на первом записываем значение в сессию, на втором - выводим, на третьем - убиваем (и выводим), на четвертом - снова выводим. А зачем передавать логин методом POST, если он и так передается в сессии? Почему нельзя - я уже писал: логин должен быть только на сервере. А не передаваться от пользователя методом POST. Со скриптом Anarki стало понятно. С этим тоже надо разобраться, но позже. Вообще - странно как-то у тебя ведет система. Если последняя ошибка понятная, в общем-то, то неубивание сессии - это очень странно. Я пока предполагаю какой-то косяк в логике твоих скриптов. Только не могу понят - какой. В общем, тестовый скрипт очень не помешает |
|||
|
||||
tikitiki |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Здесь пока два файла. Может ещё какие-нибудь надо. Их много...
Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
tikitiki |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Feldmarschall, логин после убиения сессии может не выводится. Я не проверял. А то, что скрипт добавляет товар -я это проверил, с помощью того, что скрипт выводит, что товар добавлен в корзину. Занеслась ли информация в бд-затрудняюсь сказать (может и проверял)- но по логике моего скрипта занеслась.
Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: -2 Всего: 32 |
Я не обнаружил ни в одном из файлов команды session_destroy.
Следовательно, ответ прост - ты просто не удаляешь сессию. Как я и думал, проблема была в самом скрипте. Увы, от таких ошибок форум помочь не в состоянии. Или программист понимает, что он пишет - или нет. Для лучшего понимания рекомендую перед тем, как писать программу, рисовать её логику на бумаге. Что делает куча кода в начале скрипта orders, разбираться лень. Проще написать, что там на самом деле должно быть
Всё. Больше ничего не надо. Код login.php переписать так, чтобы он работал только с массивом $_SESSION. Причем так, чтобы имена ключей не совпадали с именами локальных переменных. К примеру, если есть переменная $login, то в $_SESSION не должно быть элемента $_SESSION["login"]. Пусть это будет $_SESSION["login_name"] Там же сделать код выхода, который удаляет $_SESSION["login_name"] Добавлено @ 22:17 По поводу кода Аnarki. Скорее всего, у тебя не передается идентификатор сессии с локейшеном. Это бывает на локальных машинах. Это сообщение отредактировал(а) Feldmarschall - 16.12.2007, 22:26 |
|||
|
||||
tikitiki |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Feldmarschall, спасибо. Видимо всё так. Но session_destroy есть в другом файле. Я сразу не соориентировлся какие файлы надо включить.
|
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: -2 Всего: 32 |
видимо, до этого файла просто дело не доходит
|
|||
|
||||
tikitiki |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
||||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: -2 Всего: 32 |
header('Location: '.$_SERVER['PHP_SELF']); - вот это
|
|||
|
||||
tikitiki |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Feldmarschall, посмотрел-сейчас может быть на самом деле до этого файла не доходит. Я искал по имени файла. Но выход был -файлы есть. И вроде работал. |
|||
|
||||
Feldmarschall |
|
|||
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: -2 Всего: 32 |
"вроде" или работал?
Ты кого сейчас уговариваешь - себя или меня? Меня бесполезно - у меня проблем с сессиями нет. Себя - можешь, конечно. Но программа твоя от этого не заработает. Я считаю, что все "вроде" надо проверить. И убедиться. Как это сделать - я тебе писал: проверить наличие логина в сессии. Ты этого делать не хочешь. Я тебя заставить не могу. Можем продолжить светскую беседу на форуме. Добавлено через 2 минуты и 45 секунд Я бы на твоем месте начал с того, чтобы переписал всю работу с сессиями заново. прочитав сначала документацию по ним. Причем не встраивая сразу в свой готовый сайт, а сделав тестовую модель - файло с логином, файл с корзиной, другие нужнгые файлы. И проверил работу на них. А когда все заработает - переносил бы код в стпрые файлы. |
|||
|
||||
tikitiki |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 10.5.2005 Репутация: нет Всего: нет |
Здесь три файла с выходом. Какие-то из них были связаны. Почему три-так получилось. Что по ним можно сказать?
Присоединённый файл ( Кол-во скачиваний: 3 ) ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |