Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 944
от 10.04.2008, 23:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 475, Экспертов: 44
В номере:Вопросов: 3, Ответов: 4

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 130636: И снова здравствуйте! Натолкнулся на интересный глюк. Пара строк: $message=(isset($_POST['message']))?$_POST['message']:""; session_start(); if (!isset($_SESSION['message'])) $_SESSION['message']=""; ...
Вопрос № 130664: Здравствуйте! Не является ли символ одинарной кавычки проблемным при хранении его в MySQL? Пользуюсь addslashes(), но при просмотре ячеек через phpmyadmin видна неэкранированная кавычка. На самом деле она хранится со слешем или нет? Т.е., во...
Вопрос № 130723: День добрый. Сказите, есть ли в php функции для работы с базами даных, отличных от MySQL? Скажем dBase paradox. Дело в том, что в учебнике php 3.0 я нашел эти функции, но почему-то они не работают (php выводит сообщение, о попытке вызова ...

Вопрос № 130.636
И снова здравствуйте!

Натолкнулся на интересный глюк. Пара строк:

$message=(isset($_POST['message']))?$_POST['message']:"";
session_start();
if (!isset($_SESSION['message'])) $_SESSION['message']="";

Они не работают. POST передаётся, но не присваивается переменной (первая строка). Если же в такой последовательности:

session_start();
$message=(isset($_POST['message']))?$_POST['message']:"";
if (!isset($_SESSION['message'])) $_SESSION['message']="";

... то присваивание идёт. Что бы это значило?
Отправлен: 05.04.2008, 08:04
Вопрос задал: Прим Палвер (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: HookEst
Здравствуйте, Прим Палвер!
Это значит, что у Вас включен regiser globals.
дело в том, что в момент session_start(), при включенном register globals, не только создается и инициализируется массив $_SESSION, но и создаются-инициализируются переменные зарегестрированные в сессии.

$message=(isset($_POST['message']))?$_POST['message']:"";
//создалась переменная $message со значением или POST['message'] или ""

session_start();
//здесь, если включен register globals и в сессии зарегистрированна переменная c именем message, то значение в переменной $message - перезаписывается значением, находящимся в сессии. т.е. если в POST было значение, оно было записано в $message - но сейчас оно теряется.

if (!isset($_SESSION['message'])) $_SESSION['message']="";
...

Успехов.
Ответ отправил: HookEst (статус: Специалист)
Ответ отправлен: 07.04.2008, 08:45
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Этого я и боялся. Прийдётся все разносортные переменные переименовывать в совершенно непохожие. А жаль.


Вопрос № 130.664
Здравствуйте!

Не является ли символ одинарной кавычки проблемным при хранении его в MySQL? Пользуюсь addslashes(), но при просмотре ячеек через phpmyadmin видна неэкранированная кавычка. На самом деле она хранится со слешем или нет? Т.е., возможно, phpmyadmin показывает без слеша, который на самом деле там есть?

P.S. С get_magic_quotes_gpc() знаком. Интересует исключительно поставленный вопрос.
Отправлен: 05.04.2008, 11:40
Вопрос задал: Прим Палвер (статус: 2-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Миленин Александр
Здравствуйте, Прим Палвер!
Спец символы не являются проблемой при хранении, они являются проблемой при добавлении. В базе ковычки хранятся без слэша, если он не добавлен "вручную".
Ответ отправил: Миленин Александр (статус: Студент)
Ответ отправлен: 05.04.2008, 14:30
Оценка за ответ: 5
Комментарий оценки:
Тогда как лучше готовить к вставке в БД? mysql_real_escape_string и addslashes - оба нужны?


Вопрос № 130.723
День добрый.
Сказите, есть ли в php функции для работы с базами даных, отличных от MySQL?
Скажем dBase paradox.
Дело в том, что в учебнике php 3.0 я нашел эти функции, но почему-то они не работают (php выводит сообщение, о попытке вызова неизвестной фенкции)
И попутный вопрос:
Чем MySQL отличается от PostgreSQL ? (В двух словах)
Отправлен: 05.04.2008, 21:10
Вопрос задал: Ігор (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Иван Сергеевич
Здравствуйте, Ігор!
Дополнительные модули PHP (в том числе и модули работы с базами данных) подключаются в файле php.ini, раздел DYNAMIC EXTENSIONS. Там находятся строки вида:
extension=php_dbase.dll
extension=php_mssql.dll
По умолчанию большинство из них закомментированы (начинаются с символа точки с запятой). Поэтому надо убрать точки с запятой у тех библиотек, которые Вам понадобятся. Только убедитесь, что папка дополнительных библиотек (параметр extension_dir) указан правильно и нужные модули там присутствуют.
Ответ отправил: Иван Сергеевич (статус: 7-ой класс)
Ответ отправлен: 05.04.2008, 21:29

Отвечает: Miklucho
Здравствуйте, Ігор!
Дело в том, что прежде чем воспользоваться функциями для работы с БД отличных от MySQL (да и для нее вообщем-то тоже) необходимо подключить библиотеку для данной БД. Делается это снятием комментария с соотвествующей сроки в файле php.ini. Например для PostgreSQL это:
;extension=php_pgsql.dll

Сняв комментарий (;) вы тем самым подключите данную dll и сможете пользоваться функциями для PostgreSQL. Для dBase paradox это по-видимому строка
;extension=php_dbase.dll

Приведеные выше расширения преназначены для работы в Windows. Под Unix используйте библиотеки *.so
Ответ отправил: Miklucho (статус: Практикант)
Ответ отправлен: 05.04.2008, 21:30


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 4.72.8 от 05.04.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное