1

Тема: Подскажите с РНР, учу по книжке...

Когда вставляю тег <pre> в последнюю строку, для печати с новой строки, при просмотре Мозиллой меняется (уменьшается) шрифт, и увеличиватся расстояния между строками...(((
Почему так делается, и как этого избежать?..

Спасибо...

<?php
    # проверка существования переменной $_GET["action"]
    if(!isset($_GET["action"])){$_GET["action"]='view';}
    # Проверка существования файла strings.txt
    if(!file_exists("strings.txt")){fclose(fopen("strings.txt",'W'));}

    # начало вывода формы
    print <<<END
    <form action="strings.php" method="get">
    <table>
    <tr><td><input type="radio" name="action" value="add"></td><td>
    Добавить запись</td><td>
    <input type="text" name="string">
    </td></tr>
    <tr><td>
    <input type="radio" name="action" value="del"></td><td>
    Удалить запись номер: </td><td>
    <input type="text" name="number" size="5">
    </td></tr>
    </table>
    <input type="submit" value="Послать запрос">
    </form>
END;
    if ($_GET["action"] == "add"){
        # Запись в файл
        $FV=fopen("strings.txt",'a');
        flock($FV,2);
        fputs($FV,$_GET["string"]."\n");
        fclose($FV);
    }elseif ($_GET["action"] == "del"){
        # Удаление из файла
        $strs=file("strings.txt");
        $FV=fopen("strings.txt",'w');
        flock($FV,2);
        foreach($strs as $key => $value){
            if($key == $_GET["number"]){continue;}
            fputs($FV,$value);
        }
        fclose($FV);
    }
    # Просмотр записей
    foreach(file("strings.txt") as $key => $value){
        print "<b> $key.</b> $value <br>\n";
    }
?>

2

Re: Подскажите с РНР, учу по книжке...

Всё, не надо помогать, заработало почему-то само и без тега <pre>...
А вот если кто знает причины, то скажите, почему сначала не работало?..

3

Re: Подскажите с РНР, учу по книжке...

Freeware
Если поставить тег <pre> внутри цикла foreach, то он будет повторяться с каждой итерацией. Если поставить данный тег перед foreach, то он будет выведен только один раз.

4

Re: Подскажите с РНР, учу по книжке...

Спасибо... То есть, <pre> и делает по умолчанию пропуск пустой строки и начинает на следующей???
И ещё вопрос, как закрыть config.php в Винде???
chmod 640 confiig.php не выполняется, это наверное для Линуксов только команда?.. Или я что-то не так делаю?..
(Поставил форум РНР, и он меня тут же предупредил, что у меня небезопасный confiig.php)...

5

Re: Подскажите с РНР, учу по книжке...

Freeware
Тег <pre> - это слой (block element) имеющий изначально заданные отступы.

Совершенно верно, chmod только для Linux.
Закрыть конфигурационный файл в Windows можно средствами Apache, создав файл .htaccess следующего содержания.

<Files config.php>
order deny,allow
deny from all
</Files>

6

Re: Подскажите с РНР, учу по книжке...

Большое спасибо за .htaccess, попробую...
Этот файл закрывает все кофигурационне файлы. А сам config.inc.php нужно, или нет, закрывать?.. Или двойное расширение (если это расширение, а не название) его уже спрятало?..

7

Re: Подскажите с РНР, учу по книжке...

Freeware
Вышеприведённый .htaccess закрывает доступ к файлу config.php. Если надо закрыть какой-то другой файл, то пропишите его заместо config.php.

8

Re: Подскажите с РНР, учу по книжке...

Вот, спасибо, теперь всё неясное стало ясным...)))

А вот с таким сообщением не сталкивались?..
PHP Warning: PHP Startup: Unable to load dynamic library 'E:/usr/php/ext\php_imagick.dll' - Не найден указанный модуль. in Unknown on line 0

Выдаёт PHP Expert Editor... Библиотека скачана и добавлена в данную папку... В файле php.ini запись тоже добавлена и открыта...

9

Re: Подскажите с РНР, учу по книжке...

Freeware
Для данного расширения нужна не только библиотека, но и все остальное, сама программа. Должен признаться, что ставить это расширение на Windows крайне сложно, очень много нюансов: разные версии клиентской и серверной частей; некорректные настройки и т. д. Можете пробовать, но помочь не смогу.

10

Re: Подскажите с РНР, учу по книжке...

Здравствуйте,
вчера, лазия по форумам, мне попался вариант для этой программы с Path,
посмотрел, у меня там есть запись "c:\program files\imagemagick-6.4.6-q16;",
попробовал и регистр "С" менять, и передвинул за переменную РНР и MySQL, пока безрезультатно,
думаю, что эту программу нужно поставить на тот же диск в одну из папок, либо apache, либо php,
Как думаете?.. (Если у всех работает, значит туплю -- Я...)))

11

Re: Подскажите с РНР, учу по книжке...

Здравствуйте, снова вопрос,
Пытаюсь поставить PHPNUKE_80_RUS_211007...
он начинает добавлять базу(MySQL)... И сразу сыпятся ошибки, установка заканчивается... (Форум phpBB с базой работает, сам нормально встал, без рук)... Попробовал вручную базу sql импортировать, получилось нормально, в файле конфиг базу прописал, папку Инстол тоже удалил, но сайт не открывается... Как сделать чтобы Нюк не требовал установки и открылся просто после копирования?.. Чего ему не хватает?..
Спасибо...

12

Re: Подскажите с РНР, учу по книжке...

Freeware
К сожалению, у меня нет опыта установки phpnuke. Попробуйте найти форум, где общаются пользователи этого скрипта.

13

Re: Подскажите с РНР, учу по книжке...

Спасибо, ну ничего...
Сегодня на практике я посмотрел, что в Денвере скрипт ставится легко, значит у меня просто где-то ошибка в настройка самой MySQL (ставил по отдельности)...

14

Re: Подскажите с РНР, учу по книжке...

Freeware
Попробуйте обнулить в my.ini данную директиву, с помощью которой задается строгое соответствие SQL стандарту:
sql-mode=""

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

15

Re: Подскажите с РНР, учу по книжке...

Здравствуйте,
я оставлю ваш совет с обнулением на крайний случай...
А вот нашёл совет, добавить в database.php от портала следующие строки:

@mysql_query ("set character_set_client='cp1251'")
@mysql_query ("set character_set_results='cp1251'")
@mysql_query ("set collation_connection='cp1251_general_ci'")

после $this->_table_prefix = $table_prefix

добавил, портал наконец установился, и некоторые слова правильно показывает, по-русски, нормально, а некоторые всё-же показывает вопросиками... (Кодировки браузера не исправляют положение)  И вот в поисковиках куча советов, но ни один ещё не помог мне исправить эти вопросики в уже установленном портале...(((
Думаю, а если при установленном портале базу мочкануть ручками, и потом ручками её импортировать назад, будет ли эффект от подобного?..
Спасибо...

16

Re: Подскажите с РНР, учу по книжке...

Вместо вышеуказанных строк можно было в my.ini, раздел [mysqld], добавить:

init-connect="SET NAMES cp1251"

Таблицы надо полностью удалить и установить все заново. Конечно, если они пустые.

На счет вопросиков - смотрите в phpMyAdmin, как там выглядит кириллица.
Чтобы узнать кодировку соединения MySQL, выполните SQL запрос:

SHOW GLOBAL VARIABLES LIKE 'char%';

17

Re: Подскажите с РНР, учу по книжке...

Здравствуйте, с предыдущим вопросом разобрался,
теперь очередной,

кусок обычного кода найденного в инете... Работает почти...

// массив в котором будем хранить допустимые имена файлов и их русские названия
    $pages=array('myinfo.php'=>'О нас','contacts.php'=>'Контакты');

    // определим если $_GET[page] пустая то выведем about (своё название)
    if($_GET['page']=='') $_GET['page']='myinfo';

    // если такой  страницы в меню нет то выведем содержимое файла txt/404.htm (нужно создать)
    if(!array_key_exists ($_GET['page'],$pages))  $_GET['page']='404';

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

И вот на что жалуется:

Notice: Undefined index: page in E:\usr\apache\kuschevka.ru\www\index.php on line 12
(здесь это средняя строка)

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

Спасибо...

18

Re: Подскажите с РНР, учу по книжке...

И не пойму, почему приходится прописывать названия файлов обязательно с расширением (иначе вообще не хочет работать)... В примере были просто названия, без расширений... Может есть какая-то команда специальная?..

19

Re: Подскажите с РНР, учу по книжке...

if (empty($_GET['page'])) $_GET['page'] = 'myinfo.php';

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

20

Re: Подскажите с РНР, учу по книжке...

Ага, спасибо, сейчас попробую...)))

21

Re: Подскажите с РНР, учу по книжке...

Сразу заработало, огромное спасибо...)))
Пока не пойму, почему там в примере было именно так написано... Ученье -- свет...)))

22

Re: Подскажите с РНР, учу по книжке...

Здравствуйте, снова я...
Вопрос такой, не работает старый код, взятый из интернета...

<?php
    include("include/config.php");
    if (!isset($mod) || ($mod=="") || (!file_exists("mods/$mod.php"))) {
    $mod=$sys_def_mod;
    #Проверка на существование переменной $mod, и существования такого модуля
    # если неверное условие то присваиваем ему значением модуля по умолчанию
    }
    $PAGE_TITLE="Модуль $mod";
    include("include/top.php");
    include("mods/$mod.php");
    include("include/bottom.php");
?>

В браузере выводится модуль, указанный по умолчанию... Думаю, что код не видит модулей, потому что они не указаны, или указаны неправильно, но самому исправить не получается... Вопрос: Как правильно указать модули, чтобы в браузере переход по ссылкам переключал эти самые модули?..

Один из модулей:

<?php
    if (!eregi("index.php", $_SERVER['PHP_SELF'])) { die ("Access denied");
        }
    $PAGE_TITLE="Это Я, модуль номер 1!!!";
    #include("include/top.php");
    echo "Это модуль номер 1!<br>";
    echo "А <a href= 'index.php?mod=mod2'>здесь</a> можно посмотреть на модуль номер 2";  //ссылка должна открыть другой модуль, но не открывает его...(((
    #include("include/bottom.php");
?>

И сразу маленький вопросик, для чего нужен $PAGE_TITLE, что он даёт, и обязателен ли?.. (на экран не выводится)...

Спасибо...

23

Re: Подскажите с РНР, учу по книжке...

Чтобы пример заработал надо изменить в php.ini строку:
register_globals = On

Либо переписать переменные передаваемые через GET в таком виде:
$_GET['mod']
Обратите внимание на составление строки:
include("mods/" . $_GET['mod'] . ".php"); // Конкатенация
include("mods/{$_GET['mod']}.php"); // или так

24

Re: Подскажите с РНР, учу по книжке...

Снова, спасибо,
со включением register_globals = On всё заработало...
Но прочитал, что это не совсем безопасно, попробовал отключить и испытать другие варианты, ничего не получилось...
Буду копать дальше...
Попробую ещё прописку папки includes проверить...

25

Re: Подскажите с РНР, учу по книжке...

Freeware
В скрипте надо поменять все $mod на $_GET['mod']. Это единственно возможный и правильный синтаксис при выключенной register_globals, которая действительно считается небезопасной и рекомендуется к отключению.
http://www.php.net/manual/ru/reserved.variables.get.php