Ru-Board.club
← Вернуться в раздел «Web-программирование»

» MySql/PHP: общие вопросы

Автор: Cheery
Дата сообщения: 26.04.2009 04:23
israel_rider

Цитата:
Цитата из учебника: "В PHP изменение заголовка(header) возможно лишь ДО того, как начнет формироваться HTML-код web-документа!". То есть, в моём случае я не могу пользоваться функцией header() для редиректа.

я вам для этого на exit после header и указал.
Автор: zerkms
Дата сообщения: 26.04.2009 04:24
Cheery
exit там добавит логической стройности но принципиально ничего не изменит.
Автор: Cheery
Дата сообщения: 26.04.2009 04:28
zerkms

Цитата:
там добавит логической стройности но принципиально ничего не изменит.

ну.. на всякий случай, а то столько раз сталкивался, что делают форвард и забывают, что код то дальше выполняется

Автор: israel_rider
Дата сообщения: 26.04.2009 04:46
Читая о сессиях в другом учебнике, так же встретил этот блок -

session_start(); // Запуск сессии
$_SESSION['...'] = .... // Запись в массив
header("Location: http://....."); // Редирект
exit;

Выходит, такой код должен работать. Значит, видимо это у меня что то с настройками....
Автор: Cheery
Дата сообщения: 26.04.2009 04:47
israel_rider

Цитата:
Выходит, такой код должен работать. Значит, видимо это у меня что то с настройками..

поставьте передачу через куки. если просмотр заголовков при форварде не показывает передачу id сессии, то не будет работать
Автор: israel_rider
Дата сообщения: 26.04.2009 04:49
Понял. Спасибо. Буду пробовать с куками. Тем более, что куки - это следующяя глава учебника.

Добавлено:
zerkms, я уже понял. Буду проверять настройки, и читать про куки.
Автор: israel_rider
Дата сообщения: 27.04.2009 02:58
Ха!!! И ведь, что интересно! Начал изучать куки, включил session.use_cookies=1... И ведь вправду же блин всё заработало!!!!!!!!
Автор: israel_rider
Дата сообщения: 20.05.2009 08:27
Столкнулся с такой проблемой. Сайт в кодировке utf-8. Открывая страничку, где я в начале запускал сессию, я получал любимую ошибку: «Cannot modify header information - headers already sent и т.д.». Проблема оказалась тоже самая банальная – из за ВОМа. Удалил ВОМ, всё заработало, но теперь на всех компах, где открывают эту страничку вылазят кракозяблы. И необходимо вручную указывать браузеру, что это юникод. Что, естественно не есть гуд. . Нашёл на форумах совет включать команду кеширования, тогда можно оставлять ВОМ, но и это, как там было написано тоже не очень хорошо.
Прошу совет у профессионалов, каково наиболее оптимальное решение данной проблемы?
Автор: SparcoCF
Дата сообщения: 20.05.2009 13:54
israel_rider

Цитата:
Столкнулся с такой проблемой. Сайт в кодировке utf-8


найди конфигурационный файл Апача httpd.conf в нем найди строчку AddDefaultCharset скорее всего что там стоит windows-1251 замени на UTF-8 и будет тебе счастье
Автор: Cheery
Дата сообщения: 20.05.2009 18:11
israel_rider

Цитата:
Проблема оказалась тоже самая банальная – из за ВОМа

что такое ВОМ??
если у вас заголовки начинают "выползать" в середине - означает лишь плохой код.
Автор: israel_rider
Дата сообщения: 21.05.2009 00:41
Cheery, мне кажется, Вы не правы. Если кодировка «UTF-8 с заголовком (ВОМ)», этот ВОМ дописывается всегда впереди файла. То есть даже если у меня в файле с самого начала будет :
<?php
session_start();
и т. д. ……
этот ВОМ всегда вылезет впереди, и вылезет вышеупомянутая ошибка. Поэтому то, на всех форумах при разговоре об ошибке «Cannot modify header information - headers already sent и т.д.», всегда первым делом рекомендуют отключать ВОМ.
Сейчас изучаю страничку http://httpd.apache.org/docs/2.0/mod/core.html , «AddDefaultCharset Directive». Дело в том, что последовать твоему, SparcoCF, совету оказалось не так просто. Я просто пока не нашёл на хостинге доступа к httpd.conf файлу Апача.
Автор: Cheery
Дата сообщения: 21.05.2009 01:59
israel_rider
под чем создавали? под Windows? попробуйте пересохранить без BOM (читайте далее)
второе.. можно попросить хостера пересобрать php c enable-zend-multibyte
и
Цитата:
AddDefaultCharset Directive

не совсем нужно - вы можете выдавать кодировку и с помощью header функции
header('content-type: text/html; charset: utf-8');
Автор: israel_rider
Дата сообщения: 21.05.2009 02:18
Создавал под Windows. Как я писал, при пересохранении без ВОМ нет ошибки "Cannot modify header information .... " но есть проблема с кодировкой. Я так понимаю, этот ВОМ и указывает браузеру, в какой кодировке открывать страничку.
Не знаю, стоит ли обращаться к хостеру бесплатного хостинга.... Бесплатный, он и есть бесплатный, врят ли хостер будет что то делать....
Поэтому попробую, как Вы и сказали, при помощи "header()" . Или, нашёл ещё один способ, указать "AddDefaultCharset UTF-8" в "волшебном" файле .htaccess .
Автор: Cheery
Дата сообщения: 21.05.2009 02:23
israel_rider

Цитата:
но есть проблема с кодировкой.

я же написал - правильно указывать кодировку либо через header либо через настройку апача.. не нужно рассчитывать на авось.
есть еще один способ.. но зависит от доступа в хостинге.. прочитайте в php.ini опцию auto_prepend_file


ps: работа с буферизацией вам тут не поможет. так как данные из файла выводятся ДО возможности включить буферизацию
Автор: israel_rider
Дата сообщения: 21.05.2009 02:38
Уфффф.... Вроде победил.... Положил в корень моего сайта файл файле .htaccess, прописал в нём, как и сказал SparcoCF, "AddDefaultCharset UTF-8" .
Теперь всё окрывается корректно. И в Осле, и в Опере, и в Лисе. Блин. Жалко, с других компов не могу проверить. А на моём компе и до этого открывалось иногда правильно, иногда нет. Видимо, сам браузер переодически запоминал кодировку.... Или он из кеша своего открывал.... Хотя я нет, я рефреш нажимал. Ладно, посмотрим, попрошу кого нибудь потом со своего компа открыть....
Автор: SVlV
Дата сообщения: 21.05.2009 23:34
Помогите пожалуйста! Тут такое дело.. пишу - $link = mysql_connect("localhost", "root", "****");
mysql_select_db("organizaciya");
$result = mysql_query("SELECT strana, index, gorod, ulica, dom, korpus FROM adres WHERE id_adres = '1'");
//$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
echo $row["strana"];
echo $row["index"];
echo $row["gorod"];
echo $row["ulica"];
echo $row["dom"];
echo $row["korpus"] ;
}
mysql_free_result($result);
и мне выдает ошибку - Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in
и Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in.
Уже кучу всего прочитал... так и не доеду как мне вывести данные.. Напишите пожалуйста как надо. Думаю потом разберусь..
Автор: Cheery
Дата сообщения: 21.05.2009 23:38
SVlV
$result = mysql_query("SELECT strana, index, gorod, ulica, dom, korpus FROM adres WHERE id_adres = '1'") or die(mysql_error());
и читайте сообщение +
mysql_connect("localhost", "root", "****") or die(mysql_error());

Автор: SVlV
Дата сообщения: 21.05.2009 23:45
Ему не нравится - or die(mysql_error());
Пишет - Parse error: syntax error, unexpected T_LOGICAL_OR
Автор: Cheery
Дата сообщения: 21.05.2009 23:47
SVlV

Цитата:
Пишет - Parse error: syntax error, unexpected T_LOGICAL_OR

потому что перед or не должно быть точки с запятой, если написали.
Автор: SVlV
Дата сообщения: 21.05.2009 23:48
да да. поздно заметил. теперь пишет - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index, gorod, ulica, dom, korpus FROM adres WHERE id_adres = '1'' at line 1
Автор: Cheery
Дата сообщения: 21.05.2009 23:49
SVlV
проверьте, что в strana все буквы написаны по англ.
Автор: SVlV
Дата сообщения: 21.05.2009 23:55
Вроде все по английски (название колонки и в поле по англ написал). Чет совсем ничево не пойму..
Автор: Cheery
Дата сообщения: 21.05.2009 23:58
SVlV
хм.. проблема может быть еще и в использовании ключевого слова index
перепишите его как `index`
Автор: SVlV
Дата сообщения: 22.05.2009 00:05
Появилось - Russiaindex&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;28&#65533;.
Получается что в таблице все по английски надо заполнять? и вместо цифр-просто слово индекс появилось. Не подскажите как мне поступить в данной ситуации? Спасибо.
Автор: Cheery
Дата сообщения: 22.05.2009 00:07
SVlV

Цитата:
Получается что в таблице все по английски надо заполнять? и вместо цифр-просто слово индекс появилось. Не подскажите как мне поступить в данной ситуации?

какая кодировка у таблицы? применяется ли функция htmlentities до вноса в базу или после, при выводе??
Автор: israel_rider
Дата сообщения: 22.05.2009 00:07
Кста.... У меня по ходу была похожая херня.... Писал об этом страницу назад..... Долго возился и мучался, но так и не смог победить. Проблема с кодировками. Если я заполнял таблицу из пиэйчпимуйадмин по русски, у меня вылазили потом проблеммы с кодировкой. Но если заносить данные в таблицу средствами РНР - НТМЛ, то всё работает нормально. Попробуй, если для тебя подойдёт такой вариант.
Автор: SVlV
Дата сообщения: 22.05.2009 00:11
Windows Cyrillic (cp1251) вроде кодировка. а про второе ничево сказать не могу. Где моожно посмотреть?
Автор: Cheery
Дата сообщения: 22.05.2009 00:13
SVlV

Цитата:
Где моожно посмотреть?

ну где.. где.. в коде, конечно же
посмотрите в каком виде данные в базе - в таком же или читабельном?
если в нормальном, значит применяется при выводе.. если в таком же, то при внесении в базу
Автор: SVlV
Дата сообщения: 22.05.2009 00:18
1    Russia    000000    город    улица    28    NULL    А    NULL
В таблице все вот так.
Автор: Cheery
Дата сообщения: 22.05.2009 00:18
SVlV
значит при выводе применяется htmlentities функция или аналогичная

Страницы: 12345678910111213

Предыдущая тема: PHP: лимит времени на выполнение скрипта


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.