За последние 24 часа нас посетили 36220 программистов и 1640 роботов. Сейчас ищут 974 программиста ...

script.cgi указываю параметры но ничего не меняется

Тема в разделе "PHP для новичков", создана пользователем mahmuzar, 8 апр 2012.

  1. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    У меня установлен локальный сервер Apache/
    я хочу проверить работоспособность CGI сценариев через адресную строку броузера открыв скрипт таким образом
    localhost/script.cgi
    когда открываю скрипт должно отобразиться на странице следующий текст(как написано в учебнике)
    Код (Text):
    1.  
    2. <html><body>
    3. Привет, name! Я знаю, Вы родились born!
    4. </body></html>
    что и происходит.
    Потом я пытаюсь проделать такое(так же как расписано в книге. только там не написано, этот html код должен находиться в этом скрипте или в каком то другом файле)
    localhost/script.cgi?name=Murad&born=1987
    при этом на экране броузера должно отобразиться следующее
    Код (Text):
    1. <html><body>
    2. Привет, Murad! Я знаю, Вы родились 1987!
    3. </body></html>
    Но сообщение не меняется, код высвечивается так же как был.
    Кто подскажет, что не так делаю? может apache надо как - то настроить чтобы он обрабатывал CGI скрипты *?
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Код этого script.cgi покажи.
     
  3. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Итак, пусть у нас на сервере в корневом каталоге размещен файл сценария script.cgi
    (наверное, вы уже заметили, что расширение CGI принято присваивать CGI-
    сценариям, хотя, как уже упоминалось, никто не мешает вам использовать любое
    другое слово). Этот сценарий распознает два параметра: name и born. Где эти
    параметры задаются, мы пока не решили. При переходе по адресу
    http://example.com/script.cgi сценарий должен отработать и вывести следующую
    HTML-страницу:

    Код (Text):
    1.  
    2. <html><body>
    3. Привет, name! Я знаю, Вы родились born!
    4. </body></html>
    Разумеется, при генерации страницы параметры name и born нужно заменить на
    соответствующие значения, переданные в них.

    Добавлено спустя 3 минуты 47 секунд:
    этот момент мне и не ясен, что является содержимым этого файла.
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Ничего не понятно, что ты хочешь.
     
  5. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    мне самому ничего не понятно, ищу человека, который понимает.
    А если тебе не понятно, то что я скопировал из учебника, значит ты сам так же как и я ничего не знаешь в CGI
     
  6. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
     
  7. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    YSandro, ты хоть читаешь что там я пишу? я его сам создал. он изначально пустой.
    Я в адресной строке броузера набираю localhost/script.cgi?name=Murad&born=1987
    он должен записать вместо name = Mirad и вместо born = 1987
    но как и в какой html документ тоже не совсем ясно.
    Мне не известно только то что написано в условии задачи.
    Перечитал всю главу посвященную HTTP и CGI но не могу вникнуть.
    Может мне стоит бросить книгу и спать лечь, но очень хочется понять.
    с php файлом все получается.
     
  8. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Я просто поверить не мог, что ты, ничего не делая, ожидаешь от файла каких-то действий.
    Ты даже задачу не можешь сформулировать.
    Итак, если тебе нужен результат, о котором пишешь, то напиши в файле:
    Код (PHP):
    1. #!c:/server/php/bin/php
    2. <?php
    3. //выше - путь к программе php.exe, нужно найти прогу и вписать правильный путь
    4. $name=(isset($_GET['name']))?$_GET['name']:'_no_name_';
    5. $born=(isset($_GET['born']))?(int)$_GET['born']:-1;
    6. echo "<html><body>
    7. Привет, $name! Я знаю, Вы родились $born!
    8. </body></html>";
    9. ?>
     
  9. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    я сформулировал вопрос так, как есть в книге, практически слово в слово.
    Короче, я окончательно запутался. А где сам CGI сценарий ?
    Или это и есть CGI сценарий ?
     
  10. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    В CGI-сценарий можно запихнуть все что угодно - Pascal, Phyton, C или тот-же PHP. CGI - это интерфейс («общий интерфейс шлюза»), а не язык программирования.
     
  11. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Вот такой cgi сценарий у меня работает. Мой пример выше не будет работать.
    Код (PHP):
    1. #!c:/Server/PHP/php-5.3.2-Win32-VC9-x64/php.exe
    2. <?php
    3. echo "Content-type: text/html; charset=utf-8\n\n";
    4. $qPairArr=explode('&',$_SERVER['QUERY_STRING']);
    5. $_GET=array();
    6. foreach($qPairArr as $pair){
    7.     $tArr=explode('=',$pair, 2);
    8.     @$_GET[$tArr[0]]=htmlspecialchars(urldecode($tArr[1]));
    9. }
    10. $name=(isset($_GET['name']))?$_GET['name']:'_no_name_';
    11. $born=(isset($_GET['born']))?(int)$_GET['born']:-1;
    12. echo "<html><body>
    13. Привет, $name! Я знаю, Вы родились $born!
    14. </body></html>";
    15. ?>
    Путь к php.exe нужно прописать свой.

    В конфиге апача в разделе <IfModule mime_module> должно быть написано
    Код (Text):
    1. AddHandler cgi-script .cgi .php
    Ещё, я сохранил файл в кодировке utf-8 и в заголовке, соответственно, написал charset=utf-8.

    Добавлено спустя 7 минут 6 секунд:
    Вот такой cgi сценарий у меня тоже работает, файл test.bat:
    Код (Text):
    1. @echo off
    2. echo Content-type: text/html
    3. echo.
    4. echo.
    5. echo привет
    В конфиге апача в разделе <IfModule mime_module> должно быть написано
    Код (Text):
    1. AddHandler cgi-script .cgi .php .bat
     
  12. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    твой предыдущий пример работает, указал свой путь к файлу php.exe
    расширение файла получается нужно указывать .php, если пишется на php , и .с если пишется на С?
    Только комментарий и путь к файлу php.exe высвечиваются в броузере.

    Добавлено спустя 14 минут 42 секунды:
    Меня запутал тот момент, что расширение файла указан в книге script.cgi а при его вызове высвечивается весь код файла
    А сами php файлы я не считал cgi - сценариями.
    Вот в этом оказалась моя ошибка.
    уже за книгой больше чем более 24 часов, и все окончательно запутал
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    если расширение PHP у меня все работает, а если расширение отличное от php не работает, просто высвечивается весь код файла.
    В книге написано что расширение не имеет значения, CGI сценарий должен делать свое дело в любом случае

    Код (Text):
    1. AddHandler cgi-script .cgi .php .bat
    прописал тоже

    Может еще что надо расскомментировать в файле конфига apache?