Проблема вставки переменной в качестве моего URL в PHP fopen () - PullRequest
0 голосов
/ 24 сентября 2011

Я пытаюсь сделать URL-адрес моего XML-файла динамичным, чтобы несколько человек могли использовать мой сайт и одновременно запрашивать данные.Я приказываю сделать это, я вставляю переменную php случайного числа перед моим xmlfile.По какой-то причине у меня возникают проблемы при создании и записи XML-файлов при попытке использовать эту переменную.Когда я использую статический URL, такой как wine.xml, он работает нормально.

          $fp = fopen($randnumb.'wine.xml', 'w');
           fwrite($fp, $string);
           fclose($fp);

Ответы [ 2 ]

0 голосов
/ 24 сентября 2011

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

index.html и getXml.php

<code><html>
<head>
<script type="text/javascript">

var request = false;
try { 
  request = new XMLHttpRequest(); 
} catch (trymicrosoft) {                         
  try { 
    request = new ActiveXObject("Msxml2.XMLHTTP"); 
  } catch (othermicrosoft) {
    try {
      request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {                  
      request = false;       
    }
  }
}

if (!request) 
  alert("Error initializing XMLHttpRequest!"); 
</script>

<script type="text/javascript">

 var fileOption;
 var fileName;

   function runPhp(makeFile) 
   {  
        var url = "getXml.php"; 
        fileOption = makeFile;
        var params = "makeFile=" +makeFile+"";
        request.open("POST", url, true);  

        //Some http headers must be set along with any POST request.
        request.setRequestHeader("Content-type", "application/x-www-form-urlencoded;charset=utf-8");
        request.setRequestHeader("Content-length", params.length);
        request.setRequestHeader("Connection", "close");

        request.onreadystatechange = updatePage;
        request.send(params);

   }////////////////////

   function getXml( ) 
   {
        if(fileName==null){alert('please click create file first');return;}
        var url = fileName; 
        var params = null; 
        request.open("POST", url, true);     
        request.setRequestHeader("Connection", "close");    
        request.onreadystatechange = displayFile;
        request.send(params); 
   }////////////////////

   //You're looking for a status code of 200 which simply means okay.
   function updatePage() {
     if (request.readyState == 4) {
       if (request.status == 200) 
       {   
            if(fileOption==1)  
                {fileName=request.responseText;  return;}
            document.getElementById('divResults').innerHTML=request.responseText;
            document.getElementById('textareaResults').innerHTML=request.responseText;   
       } 
       else{
         //alert("status is " + request.status);
         }
     }
   }

      function displayFile() {
     if (request.readyState == 4) {
       if (request.status == 200) 
       {    
            document.getElementById('textareaResults').innerHTML=request.responseText;
            document.getElementById('divResults').innerHTML='File loaded in text area above.';
       } 
       else{
         //alert("status is " + request.status);
         }
     }
   }

</script>
</head>
<body >


<span style="background-color:blue;color:yellow;"  
onClick="runPhp(0)"/>
Click for Xml Results.<br>
(<font color=pink>I prefer this one!!!</font>)
</span><br><br>

<span style="background-color:blue;color:yellow;"  
onClick="runPhp(1)"/>
Click to create an xml file.<br> 
</span>

<span style="background-color:blue;color:yellow;"  
onClick="getXml(1)"/>
Click to read the xml file.<br> 
</span>

<textarea rows="10" cols="88"  id="textareaResults">
</textarea>
 <br><br>
<pre><div    id="divResults"></div>


\ n "; $ xml_output. =" \ n "; для ($ x = 0; $ x \ n "; $ xml_output. =" \ t \ t". $ row ['help_category_id']."\ n "; $ xml_output. =" \ t \ t ". $ row ['name']." \ n "; $ xml_output. =" \ t \ t". $ row ['parent_category_id']."\ n "; $ xml_output. =" \ t \ n ";} $ xml_output. =""; if ($ _ POST ['makeFile'] == 0) echo $ xml_output; else {$ fileName= rand (). 'file.xml'; $ fp = fopen ($ fileName, 'w'); fwrite ($ fp, $ xml_output); fclose ($ fp); $ dbq = "\" ";echo $ fileName;}?>
0 голосов
/ 24 сентября 2011

Я могу ошибаться (так что давайте поправим меня) если у вас есть xml и вы хотите, чтобы многие могли его прочитать, зачем вам делать несколько копий этого ?!

Разве сервер не должен выполнять эту работу, обслуживая файл многим людям? Если я ошибаюсь и вы пытаетесь сделать что-то еще, тогда этот php работает нормально. Таким образом, вам не нужно искать ошибки в php.

<?php

$fileName = rand().'file.xml';
$fp = fopen($fileName, 'w');
fwrite($fp, 'Hello!');
fclose($fp);
?>

<?php
$handle = fopen($fileName, "rb");
$contents = fread($handle, filesize($fileName));
print_r($contents);
fclose($handle);
?>
var winexml=loadXMLDoc("<?=$randnumb?>wine.xml");

У вас <? работает? причина вамп спрашивает <?PHP (должен быть php.ini)

Почему у вас есть секунда = в параметрах loadxmldoc ?! Работает ли это:

<?PHP 
$dbq="\"";
echo 'var winexml=loadXMLDoc(',$dbq,$randnumb,'wine.xml',$dbq,');';
?>
...