[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не работает include
userguest
Здравствуйте.
Может не совсем по теме ветки форума, но где задать вопрос не знал.

Загрузил на хостинг (webnames.ru) сайт. Сначала скрипты не работали. Оказалось что нужно права доступа прописать. А теперь include не работает. В чем может быть дело? Может изменить register globals?

Пытался связаться с тех.поддержкой, говорят все должно работать. Ощущение как будто полные нули в этом. Про права доступа даже не сказали. Сам в поиске нашел. Подскажите, пожалуйста, может какие-то стандартные вещи сделать нужно?

И, кстати, никому не советую обозначенный хостинг.



Спустя 18 минут, 38 секунд (24.04.2010 - 12:34) Alex Karamushko написал(а):
Попробуйте включить ошибки для пхп, для этого если пхп установлен как модуль для апача создайте .htaccess файл, со следующим контентом в корне вашего сайта:
php_flag display_errors On
php_value error_reporting 6143

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

Спустя 4 часа, 10 минут, 34 секунды (24.04.2010 - 16:45) sl4mmer написал(а):
userguest
ммм а причем тут register_globals ?


1) в начале скрипта вставь

error_reporting( E_ALL );


и запост сюда что пишет скрипт при исполнении...



З.Ы. твоей фразой о register_globals навеяло - ты имя подключаемого файла передаешь скрипту каким образом?

Спустя 16 часов, 52 минуты, 27 секунд (25.04.2010 - 09:37) userguest написал(а):
<?php
include ("blocks/name.php");
?>

Если вы об этом.

Сначала воспользовался первым советом. Получились непонятные для меня вещи.
Сначала создал .htaccess пустой. При обновлении страницы стали видны ошибки. Написал в данном файле всякую чушь - браузер выдал ошибку. Удалил файл - снова были видны ошибки соединения с базой. Оказалось, что данные для подключения к базе были не верны. Исправил их на хостинге напрямую. Все осталось по-прежнему. Удалил все с хостинга, исправил тоже самое на локальном компьютере, загрузил на хостинг - стало работать.

Далее не работала администраторская зона - была та же история с данными для подключения к базе. Тоже пришлось удалять и загружать на хостинг заново. Почему - неясно (может, кеширование). После этого данные из базы еще не начали выводиться. Посмотрел у меня в include директории и папки с маленькой буквы записаны (это единственное, что было не так, больше не к чему прицепиться), а реальные папки и файлы с большой. Исправил на хостинге - не работает. Исправил локально, удалил все с хостинга, загрузил заново. Начали выводиться данные из базы. Теперь проблема со скриптом авторизации от участника форума TWIN'а, я еще по этому поводу вопрос задавал.
Проблема такая. После того как изменил буквы с заглавных на строчные этот скрипт, вроде, начал работать. Хотя бы просил ввести пароль. Ввожу верные данные - он не принимает. Так около 10 раз подряд. После этого не знаю на какой раз он открывает страницу, но с ошибкой:

Warning: include(auth/auth.php) [function.include]: failed to open stream: No such file or directory in /... /index.php on line 1

Warning: include(auth/auth.php) [function.include]: failed to open stream: No such file or directory in /... / index.php on line 1

Warning: include() [function.include]: Failed opening 'auth/auth.php' for inclusion (include_path='.:/...') in /... / index.php on line 1

Спустя 5 минут, 1 секунда (25.04.2010 - 09:42) userguest написал(а):
Вот это новости!

Оказывается когда нажимаешь кнопку отменить при вводе пароля, страница открывается, а не после n-го раза ввода пароля.

Спустя 1 час, 44 минуты, 47 секунд (25.04.2010 - 11:27) userguest написал(а):
Такое положение дел только в

Опере:
Версия:
10.51
Сборка:
3315

В IE не пускает, если нажать отмену в Firefox тоже.
Это как называется?

Спустя 1 час, 10 минут, 31 секунда (25.04.2010 - 12:38) userguest написал(а):
Во всех путях исправил первые буквы на строчные, теперь вроде при нажатии кнопки отмена все работает так, как надо.

Но не пускает по паролю.
Наверное с кодировками проблема. Как исправить?
Кстати про кодировки.
На самом сайте, когда его скопировал на хостинг вместо букв были ????????.
Потом на этом форуме нашел, что после соединения с базой нужно прописать mysql_query("SET NAMES 'cp1251'");
Это помогло.
Как быть теперь?

Спустя 7 минут, 42 секунды (25.04.2010 - 12:45) twin написал(а):
Ну если пользовался моей авторизацией, там черным по белому писано - никаких cp1251. Там все в utf-8 было. Теперь даже не знаю что сказать...

Спустя 2 часа, 29 минут, 2 секунды (25.04.2010 - 15:14) userguest написал(а):
twin, ну тогда я совсем запутался, помогите, пожалуйста.
Рассказываю все сначала.

Во всех страницах сайта в теге <body> прописано:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">


Все наполнение берётся из базы данных.

На локальном сервере:

MySQL

* Сервер: localhost via TCP/IP
* Версия сервера: 5.1.40-community
* Версия протокола: 10
* Пользователь: ...
* MySQL-кодировка: UTF-8 Unicode (utf8)

Все данные в браузере на локальном сервере отображаются корректно.

Экспоритровал базу в текстовый документ, на хостинге создал базу с нужным именем сделал SQL запрос с текстом из экспортированногго документа. База с таблицами создана.



Копирую сайт на хостинг.
Открываю главную страницу. Все данные, которые извлекаются из базы отображаются в виде вопросительных знаков (??????). Остальные данные (пункты меню, нижняя часть сайта), которые находятся непосредственно в тексте php файла отображаются корректно.

Данные базы (сервера MySQl - не знаю как правильнее) на хостинге:

Protocol version: 10
Сервер: Localhost via UNIX socket
Пользователь: admin_site@localhost
MySQL-кодировка: UTF-8 Unicode (utf8)

После этого на данном форуме нахожу, что проблему поможет решить добавление в файл для подключения к базе данных строчки:


mysql_query("SET NAMES 'cp1251'");


Добавляю - все отображается корректно.

Теперь про администраторску зону. Там для подключения к базе к каждой странице подключается этот же файл.

Первоначальный логин/пароль: Administrator/123.
Пароль записан в базе как хеш числа 123 , т.е. 202cb962ac59075b964b07152d234b70.

Перехожу в администраторский раздел, ввожу данные - не пускает.
Подключение с базой осуществляется, потому как все остальные страницы выводят данные из нее, а подключаются они тем же файлом.

После создал другой файл для подключения к базе и убрал оттуда строчку:


mysql_query("SET NAMES 'cp1251'");


Эффект тот же - не пускает.

Вроде все.


Спустя 13 минут, 32 секунды (25.04.2010 - 15:28) twin написал(а):
Ну с самых первых строчек.
Цитата
Во всех страницах сайта в теге <body> прописано:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
нафига?
Когда же наконец дойдет то, что от лукавого эти кодировки самодельные.
База у тебя в utf, а ты с ней под cp1251 коннектишься. Проблемы еще только начинаются.

Но это к теме отношения не имеет, так как цифры и латиница кодируются везде одинаково. Искать нужно в другом месте.

Спустя 16 часов, 15 минут, 50 секунд (26.04.2010 - 07:44) userguest написал(а):

<?php
include ("blocks/connect_bd.php");
if(!isset($_SESSION['enter']))
{
if (empty($_SERVER['PHP_AUTH_USER']))
{
header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
header ("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$res = mysql_query("SELECT COUNT(*) AS cnt FROM userlist
WHERE user='"
.mysql_real_escape_string($_SERVER['PHP_AUTH_USER'])."'
AND pass='"
.md5($_SERVER['PHP_AUTH_PW'])."'"
);


if (mysql_result($res, 0) == 0)
{
header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
header ("HTTP/1.0 401 Unauthorized");
exit();
}

$_SESSION['enter'] = true;

}
}

?>


Twin, вот ваш скрипт с небольшими моими изменениями. Как сделать, чтобы проверки логина и пароля не происходило? Т.е. чтобы пользователь ввел данные и скрипт его просто пустил на страницу. Хочу использовать $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW'], чтобы отследить какие данные получает массив. Вдруг здесь что-то не так.

Спустя 2 часа, 1 минута, 32 секунды (26.04.2010 - 09:45) userguest написал(а):
А может быть, как говорил Попов в своих видеоуроках, что настройки сервера на хостинге не позволяют напрямую обращаться к $_SERVER['PHP_AUTH_USER'] и $_SERVER['PHP_AUTH_PW']?
Я уже не знаю к чему цепляться, дело в скрипте авторизации.

Спустя 7 часов, 50 минут, 46 секунд (26.04.2010 - 17:36) userguest написал(а):
Ну помогите кто-нибудь, пожалуйста.
Ведь многие из вас разбираются в теме лучше, чем я.

Спустя 43 минуты, 9 секунд (26.04.2010 - 18:19) userguest написал(а):
Вот элементарный скрипт авторизации:

<?php
$login=$_SERVER["PHP_AUTH_USER"];
$password=$_SERVER["PHP_AUTH_PW"];
if($login=="admin" and $password=="admin"){

}

else { header('WWW-Authenticate: Basic realm="US Nuclear Force Red Button"');
header('Status: 401 Unauthorized');
header('HTTP-Status: 401 Unauthorized');
echo 'No pasaran!';
exit; }

?>


Но даже он на хостинге не работает, а на локальном сервере все отлично.
Дело не в ошибке подключения к базе и не в кодировках. В чем же тогда?

Спустя 12 минут, 8 секунд (26.04.2010 - 18:31) twin написал(а):
А так что скажет?
<?php    

if(empty($_SERVER["PHP_AUTH_USER"]))
{
header('WWW-Authenticate: Basic realm="US Nuclear Force Red Button"');
header('Status: 401 Unauthorized');
header('HTTP-Status: 401 Unauthorized');
}

echo $_SERVER["PHP_AUTH_USER"], '<br>';
echo $_SERVER["PHP_AUTH_PW"];

Спустя 32 минуты, 53 секунды (26.04.2010 - 19:04) userguest написал(а):
В ΙΕ8:

Первые два раза после нажатия кнопки ок выводит окно для ввода снова. После третьего раза стабильно пускает на страницу. В исходном коде появляется только тег <br> и чуть-чуть "плывет" разметка страницы.
При нажатии кнопки отмена - то же самое.

В Opera 10.51 сборка 3315:

Все то же самое, только при вводе данных пускает на 5-й раз ввода и так же только тег <br>.

Google Chrome 4.1.249.1059 (44723):

Попробовал вводить данные 20 раз. Результат - не пускает. Но при нажатии кнопки отмена пускает. Отображается только тег <br> и тоже плывет разметка, только уже по-другому.

В Mozilla 3.5.9:

Слово в слово как с Google'ом. Пробовал тоже 20 раз. Не пускает. При нажатии кнопки отмена пускает. Отображается только тег <br> и тоже плывет разметка, точно также как и в Google Chrome.

В Safari 4 (530.17):
Попробовал ввести данные только два раза, т.к. очень долго "думал". Результат - "подумает" и снова выводит окно для ввода данных. При нажатии кнопки отмена просто прекращает загрузку и появляется белое окно.



Спустя 1 час, 6 секунд (26.04.2010 - 20:04) userguest написал(а):
Все заработало.

PHP на хостинге был запущен не как модуль Apache.
Выдержка из руководства PHP - HTTP-Аутентификация в PHP возможна только в том случае, когда он выполняется как модуль веб-сервера Apache, и, соответственно, недоступна для CGI-версии. Прочитал и вспомнил, что менял тип подключения PHP, когда не работало подключение к базе и подключение модулей через include, тогда дело было в несогласовании регистра букв в указании путей к файлам и в названии самих файлов. А после того, как эту проблему исправил, видимо, забыл изменить способ запуска PHP.

Приношу свои извинения за вопросы, возникшие в следствие моей забывчивости. А ведь уже собирался звонить в хостинг-компанию.

Когда искал в поисковых системах почему не работает авторизация увидел, что эта проблема была и у других людей. Так вот, если кто-то наткнется на эту тему, то я вам советую (как чайник чайнику из своего опыта...) если не работает HTTP-Аутентификация на хостинге:

Вот полностью рабочий скрипт пользователя Twin, берите, не ошибётесь (не забудьте сказать спасибо автору):

if(!isset($_SESSION['enter']))
{
if (empty($_SERVER['PHP_AUTH_USER']))
{
header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
header ("HTTP/1.0 401 Unauthorized");
exit();
}
else
{
$res = mysql_query("SELECT COUNT(*) AS cnt FROM resume
WHERE login='"
. mysql_real_escape_string($_SERVER['PHP_AUTH_USER']) ."'
AND password='"
.md5($_SERVER['PHP_AUTH_PW'])."'"
);


if (mysql_result($res, 0) == 0)
{
header ("WWW-Authenticate: Basic realm=\"Admin Page\"");
header ("HTTP/1.0 401 Unauthorized");
exit();
}

$_SESSION['enter'] = true;

}
}



Для того, чтобы адаптировать для своего сайта измените только слова login и password на названия полей таблицы вашей базы данных, где хранятся логины и пароли пользователей.

1) проверьте, чтобы регистр букв в указании путей к файлам соответствовал регистру букв в названии файлов.
2) запускайте PHP, как модуль Apache-сервера.
3) т.к. используется одностороннее шифрование пароля, то проверьте, что вводимые данные соответствуют данным в базе данных. Для уверенности сделайте как я. Добавьте напрямую в базу в качестве логина: adminstrator, в качестве пароля: 202cb962ac59075b964b07152d234b70 - это соответствует числу 123. После этого при запросе авторизации введите логин administrator и пароль 123. Все должно работать.

И старайтесь не задавать глупых вопросов пока вы не сделали все, что сказано в списке выше - я уже задал эти вопросы за вас.




Спустя 1 день, 1 час, 40 минут, 28 секунд (27.04.2010 - 21:45) daemon2010 написал(а):
Цитата (userguest @ 26.04.2010 - 15:19)
Вот элементарный скрипт авторизации:

<?php
$login=$_SERVER["PHP_AUTH_USER"];
$password=$_SERVER["PHP_AUTH_PW"];
if($login=="admin" and $password=="admin"){

}

else { header('WWW-Authenticate: Basic realm="US Nuclear Force Red Button"');
header('Status: 401 Unauthorized');
header('HTTP-Status: 401 Unauthorized');
echo 'No pasaran!';
exit; }

?>


Но даже он на хостинге не работает, а на локальном сервере все отлично.
Дело не в ошибке подключения к базе и не в кодировках. В чем же тогда?

Если пхп на сервере установлен как CGI а не как модуль для веб сервера, то такой метод аутентификации вообще не будет работать

Спустя 38 минут, 59 секунд (27.04.2010 - 22:24) twin написал(а):
Вот тут все подробненько.

Спустя 19 часов, 27 минут, 25 секунд (28.04.2010 - 17:51) userguest написал(а):
Спасибо за ссылку. Хорошая статья.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.