Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите доделать скрипт 
:(
    Опции темы
web_VIP
Дата 8.2.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Для начала вот мои скрипт:

файл - check_db.php
Код
<?php
//Убираем вывод ошибок на экране
error_reporting(0);

//Файл с данными
$file="db.txt";

//Проверяем наличие файла
if (!file_exists("$file")) { echo "файла нет<br>"; };

//Открытие файла
$file_op=fopen($file,"r+");

//Проверяем открытие файла
if (!$file_op) { echo "файл не открывается"; };

//Чтение из файла
$file_st=fgets($file_op);

//Помещаем все данные в массив
$file_db=explode("|", $file_st);

//Подключение к БД
$connect_db=mysql_connect("$file_db[0]","$file_db[1]","$file_db[2]");

//Проверяем подключение к БД
if (!$connect_db) { echo "К бд не подключился"; };

//Проверка БД
$connect_bd=mysql_select_db("$file_db[3]");

//Проверяем созданную БД
if (!$connect_bd) { echo "База данных <b>$file_db[3]</b> не создана!!!"; };

//Устанавливаем кодировку БД
mysql_query("SET NAMES CP1251");
?>


файл - db.txt
Код

localhost|root|12345|name


Два этих файла находяться в:
- http://localhost/libraries/db.txt
- http://localhost/libraries/check_db.php

файл - index.php пусть его: http://localhost/index.php 
Код

<?php
    include ("libraries/check_db.php");
?>


В результате выводиться ошибка что он не может найти "db.txt" в этой директорий, суть ошибки я понял, это нужно изменить в $file="db.txt"; => то есть указать путь => $file="libraries/db.txt";

Но вопрос в другом, если изменить, то файл будет виден только для этой директорий, а если я захочу его подлючить в других директориях (http://localhost/main/, http://localhost/lib/ и т.д.) Может подскажите что можно сделать в этом случае, может как то установить директорию или что то еще, я просто запутался.





PM MAIL   Вверх
Vaulter
Дата 8.2.2008, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



Код

$file=dirname(__FILE__)."db.txt";

попробуй так


--------------------
PM MAIL WWW ICQ   Вверх
web_VIP
Дата 8.2.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Цитата(Vaulter @ 8.2.2008,  16:17)
Код

$file=dirname(__FILE__)."db.txt";

попробуй так

А что это значит? можешь пояснить

Добавлено через 4 минуты и 49 секунд
Цитата(Vaulter @ 8.2.2008,  16:17)
Код

$file=dirname(__FILE__)."db.txt";

попробуй так

Пробую изменить $file="1.txt" => $file=dirname(__FILE__)."1.txt"

Ошибка!!!
PM MAIL   Вверх
drpain
Дата 8.2.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 27.9.2007

Репутация: нет
Всего: нет



я бы попробывал так

Код

$file = $_SERVER["DOCUMENT_ROOT"]."/libreris/db.txt"


или если точно знаешь что надо на уровень выше

Код

$file = getcwd()."/../libreris/db.txt"



PM MAIL   Вверх
web_VIP
Дата 8.2.2008, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Все работает!!! Спосибо!!!

Это сообщение отредактировал(а) web_VIP - 8.2.2008, 16:45
PM MAIL   Вверх
web_VIP
Дата 8.2.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Вариант: 
Код

$file = dirname(__FILE__)."\1.txt";
 
Тоже работает!!!

Это сообщение отредактировал(а) web_VIP - 8.2.2008, 16:57
PM MAIL   Вверх
Golda
Дата 8.2.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Цитата(web_VIP @  8.2.2008,  16:19 Найти цитируемый пост)
Код

$file=dirname(__FILE__)."db.txt";

попробуй так

А что это значит? можешь пояснить


Смысл предложений Vaulter и drpain в том, чтобы составить абсолютный путь к файлу. dirname() вернет путь в файловой системе к директории, в которой расположен Ваш скрипт. Должен заработать, если добавить слеш.

Код

$file=dirname(__FILE__)."./db.txt";


В принципе любой из предложеных вариантов должен заработать, но есть ньюансы. 

Вараианты  $file=dirname(__FILE__)."./db.txt"; и $file = getcwd()."/../libraries/db.txt";  опираются на знание относительного положения файла относительно скрипта. Если Вам придется не подключать файл с определением пути файла, а определять в другом скрипте, из другой директории, путь придтся формировать по-другому.

Вариант $file = $_SERVER["DOCUMENT_ROOT"]."/libraris/db.txt";  в этом смысле более общий. Так можно определить путь к файлу, не заботясь о распоположении скрипта. Но он опирается на предположение, что Ваш проект обязательно расположен в корне сайта. Если переместить проект как целое в поддиректорию, работать перестанет.

С getcwd() связан еще один ньюанс. Если dirname() возвращает директорию, в которой расположен данный скрипт, то getcwd() возвращает текущую рабочую директорию. И тут надо быть осторожным. Если Ваш скрипт подключается другим, из другой директории, Вас ждет сюрприз.  getcwd() вернет директорию, в который расположен скрипт, вызванный пользователем, а не подключенный. А если вызов происходит из командной строки, текущая директория - это вообще директория, в которой находится пользователь, когда этот скрипт вызывает. Текущая директория - очень непредсказуемая штука. Я бы не использовала этот вариант


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
web_VIP
Дата 8.2.2008, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Golda  Ну и что же лучше выбрать?
PM MAIL   Вверх
Golda
Дата 8.2.2008, 17:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Вам лучше знать особенности своего проекта. Я объяснила ньюансы, а дальше решайте. В текущей постановке задаче. Если точно известно, проект не будет перемещаться в поддиректорию и скрипт всегда будет вызываться через веб-сервер, а не из командной строки, я бы выбрала вариант с $_SERVER["DOCUMENT_ROOT"]. Заодно не тратится время на вызов дополнительных функций


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
web_VIP
Дата 9.2.2008, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 8.9.2007

Репутация: нет
Всего: нет



Golda  А мне если чесно понравилась вот эта идея - $file=dirname(__FILE__)."./db.txt"; так как при смене директорий скрипт все равно будет работать, ну других пока минусом не нашел в нем. а $_SERVER["DOCUMENT_ROOT"] показывает путь до корневой директорий сайта как я понял.
PM MAIL   Вверх
Staind
Дата 9.2.2008, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 17.12.2007
Где: Планета сокровищ

Репутация: 2
Всего: 3



Цитата

а $_SERVER["DOCUMENT_ROOT"] показывает путь до корневой директорий сайта как я понял

Да. Верно.
P.s. Удобная переменная, имхо.
--------------------
Ничто так не раздражает человека, как просьба успокоиться
PM MAIL WWW ICQ   Вверх
Golda
Дата 9.2.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Цитата(web_VIP @  9.2.2008,  09:22 Найти цитируемый пост)
Golda  А мне если чесно понравилась вот эта идея - $file=dirname(__FILE__)."./db.txt";


Вполне нормальный вариант. Только, sorry, заметила у себя описку. Точка лишняя. Я имела в виду

Код

$file=dirname(__FILE__)."/db.txt";



--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
flashaa
Дата 9.2.2008, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(drpain @ 8.2.2008,  16:27)
я бы попробывал так

Код

$file = $_SERVER["DOCUMENT_ROOT"]."/libreris/db.txt"


или если точно знаешь что надо на уровень выше

Код

$file = getcwd()."/../libreris/db.txt"

Не очень хорошие решения. Первое соответственно работает только если скрипт лежит "в корне сайта", что нехорошо, т.к. я переложу во вложенную папку  или перемещусь на другой хостинг и все перестанет работать.
getcwd() - решение тоже не надежное, т.к. этот параметр может повести себя непредсказуемо. В php-apache он равен директории запрошенного скрипта. А если мы захотим запросить не этот скрипт а другой, а данный захотим подключить через require или include все сломается. В php-cli скрипт вообще не меняет рабочую директорию. В php-cgi по-моему тоже не меняет (но не утверждаю, т.к. не уверен). 
Так что самый хороший вариант dirname(__FILE__)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0532 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.