1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

Выполнение РНР скрипта через JavaScript

Тема в разделе "Web Coding", создана пользователем terkin, 5 июл 2007.

Статус темы:
Закрыта.
Модераторы: latteo
  1. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    Возможно ли вставить на страницу javascript который при загрузке будет выполнять РНР скрипт лежащий на сервере?
     
  2. -Nou-

    -Nou- Постоялец

    Регистр.:
    29 апр 2007
    Сообщения:
    134
    Симпатии:
    12
    Да, возможно:
    Код:
    <body onLoad="javascript:document.location='http://yourdomain.com/test.php';">
    
    Только после этого редиректа пользователь увидит результат работы пхп-скрипта. Можно запихать его в скрытый ифрейм:
    Код:
    <iframe width="0" height="0" src="test.php" onLoad="MyFunc();">
    
    где MyFunc() должна быть описана в <head> и запускается сразу после загрузки пхп-скрипта. Если она вообще нужна.
     
  3. terkin

    terkin

    Регистр.:
    9 дек 2006
    Сообщения:
    513
    Симпатии:
    162
    Не мне нужен не редирект, сейчас попробую описать ситуацию, вобщем я залил в директорию на сайте скрипт, но так как в той директории htaccess'ом запрещено выполнение РНР я залил его как index.txt, на сам сайт у меня есть права добавлять html код, тоесть мне нужно как то через html заставить выполниться РНР скрипт который сейчас имеет расширение ТХТ
     
  4. mixamixa

    mixamixa Постоялец

    Регистр.:
    9 янв 2007
    Сообщения:
    61
    Симпатии:
    13
  5. everest

    everest

    Регистр.:
    20 дек 2006
    Сообщения:
    197
    Симпатии:
    20
    Можно настроить apache так, чтобы он выполнял файлы txt как php. Но судя по описанной ситуации - действительно никак.
    Или изменить .htaccess
     
  6. -Nou-

    -Nou- Постоялец

    Регистр.:
    29 апр 2007
    Сообщения:
    134
    Симпатии:
    12
    Тогда никак. А что, взломал еду домен?)
     
  7. ozor

    ozor Писатель

    Регистр.:
    22 дек 2006
    Сообщения:
    7
    Симпатии:
    1
    ну по вопросу, чтобы он именно исполнялся как пхп на этом серваке - действительно никак.

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

    Код:
    <!-- this_site.ru -->
    <script language="javascript" type="text/javascript" src="http://another_site.ru/js.php"></script>
    <body onload="MyFunction()">
    PHP:
    <?
    // Это типа js.php на another_site.ru
        
    header('Content-Type: application/x-javascript'); 
        print 
    'MyFunction() {';
            
    // пхп-код
        
    print '}';
    ?>
     
  8. spacer123

    spacer123 Постоялец

    Регистр.:
    8 дек 2006
    Сообщения:
    74
    Симпатии:
    9
    Нужно с помощью яваскрипта подгружать пхпшную страницу в iframe и брать оттуда все, что нужно.
     
  9. smb14

    smb14 Постоялец

    Регистр.:
    28 янв 2007
    Сообщения:
    83
    Симпатии:
    18
    аяксовый метод, без всяких фреймов и перехода на другую страницу:

    // функция создания нового XMLHttpRequest объекта
    function new_XMLHttpRequest(process_func){
    if (typeof window.ActiveXObject != 'undefined' ){
    var xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
    //xmlObj.onreadystatechange = process;
    xmlObj.onreadystatechange = process_func;
    }else{
    var xmlObj = new XMLHttpRequest();
    //xmlObj.onload = process;
    //xmlObj.onreadystatechange = process;
    xmlObj.onreadystatechange = process_func;
    }
    return xmlObj;
    }

    var reqID;
    // функция запроса загрузки файла по URL
    function request(url,toID,func){
    xmlDoc = new new_XMLHttpRequest(func);
    if (toID) reqID = toID;
    xmlDoc.open("GET", url);
    //setTimeout("xmlDoc.send(null)",0);
    xmlDoc.send(null);
    }

    // функция обработки запроса
    function process(){
    if (xmlDoc.readyState == 4) //alert(xmlDoc.status);
    {
    s = xmlDoc.responseText;
    //alert(s); //alert("readyState="+xmlDoc.readyState);
    if (reqID) {
    document.getElementById(reqID).innerHTML = s;
    } else {
    return s;
    }
    } else{
    return false;
    }
    }

    вызывать в JS так:
    function request("phpfile.php","content-id",process)

    Приспособить такую конструкцию можно много для чего
     
  10. ozor

    ozor Писатель

    Регистр.:
    22 дек 2006
    Сообщения:
    7
    Симпатии:
    1
    smb14, ты продемонстрировал то, что ты знаешь, что такое аякс. но тем не менее, он не переигрывает запрет апача на исполнение пхп

    и эта функция
    function request("phpfile.php","content-id",process)
    не даст ожидаемого везультата

    все-равно эта js-функция вызывает пхп-файл, который не будет исполнен на этом сервере. а вызвать его с другого сервера нельзя, т.к. в аяксе действует правило песочницы.
     
Статус темы:
Закрыта.