Не могу передать параметр в PHP - PullRequest
0 голосов
/ 11 сентября 2010

Я парень из javascript, который слишком глубоко разбирается в php (хотя этот вопрос не слишком глубок).

Я передаю две разные переменные в URL из файла в файл. Один проходит нормально, а другой нет.

У меня есть 2 файла. upload.php и uploadfiles.php.

Параметры помогают построить пункт назначения, в который загружаются файлы.

Два параметра это "memberId" и "fileType".

Здесь я передаю параметры в uploadfiles.php, этот код находится на upload.php.

Это в двух местах. Один для скрытого ввода для формы, а другой передается в виде var во flash-скрипт.

В форме:

<input name="uploadscript" id="uploadscript" type="hidden" value="/flashuploader/FileProcessingScripts/PHP/uploadfiles.php?memberId=<?php echo $_REQUEST["memberId"] ?>&fileType=<?php echo $_REQUEST["fileType"] ?>" />

В js:

uploadUrl: '/flashuploader/FileProcessingScripts/PHP/uploadfiles.php?memberId=<?php echo $_REQUEST["memberId"] ?>&fileType=<?php echo $_REQUEST["fileType"] ?>'

Я протестировал на upload.php, что $ _REQUEST ["fileType"] действительно имеет правильное значение.

А потом я получаю параметры на uploadfiles.php примерно так:

$uploaddir=realpath(dirname(__FILE__) . '/../../../memberimages/') . '/'.$_REQUEST["memberId"].'/My_Files/'.$_REQUEST["fileType"].'/';

Параметр "memberId" работает нормально, но "fileType" пуст. Я уверен, что это связано с тем, как я добавляю params к URL с помощью php на upload.php, но у меня нет идей.

Вот HTML-код, созданный и возвращенный файлом upload.php. Вы можете видеть, что значения выглядят корректно в строках 44 и 80:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script type="text/javascript">

   function mysubmit(type)
   {
      if(document.getElementById("uploadscript").value=='')
      {
         window.alert('Enter upload processing script file name!');
         return false;
      }
      if(type=='flash')
      {        
         MultiPowUpload.uploadAll(document.getElementById("uploadscript").value); 
         document.getElementById("server_reply").value="";
      }
      else
      {
         var FormObj = document.getElementById("myform");
         FormObj.action = document.getElementById("uploadscript").value;
         return true;
      }
   }

   function MultiPowUpload_onComplete(type, index, serverResponse)
   {  
      var reply;
      reply = document.getElementById("server_reply");
      reply.value += "\nReply for file: " + MultiPowUpload.fileList()[index].name + "\r\n" + serverResponse + "\n";
   }
   var fileType = 'Video';
   function MultiPowUpload_onCompleteAbsolute(type, uploadedBytes)
   {
      if (fileType == 'Video'){
           parent.loadUserVideos();
      } else if (fileType == 'Images') {
           parent.loadUserImages();
      }
   }

  </script>

<div style="margin-top: -20px">
<input name="uploadscript" id="uploadscript" type="hidden" value="/flashuploader/FileProcessingScripts/PHP/uploadfiles.php?memberId=43&fileType=Video" />
<table width="380" cellpadding="0" cellspacing="0">
   <tr>
      <td style="position: relative;">
      <div id="MultiPowUpload_holder" style="margin-top: 20px">
      <table width="380" cellpadding="0" cellspacing="0">
         <tr>
            <td>
            <form id="myform" onSubmit="return mysubmit();"
               enctype="multipart/form-data" action="" method="POST">
            <table width="100%" border="0" cellspacing="0" cellpadding="0">
               <tr>
                  <td width="106"><span
                     style="font-family: Arial, Helvetica, sans-serif; font-size: 12px">Select
                  file:</span></td>
                  <td width="294"><input name="Filedata" type="file" /></td>
               </tr>
            </table>
            <br>
            <input type="submit" value="Upload File" /></form>
            </td>
         </tr>
      </table>
      </div>
      <!-- <img src="/images/ajax-loader.gif" style="position:absolute; top:40%; left:50%; margin-left:-110px;" /> -->
      <!-- SWFObject home page: http://code.google.com/p/swfobject/ --> <script
         type="text/javascript" src="/flashuploader/swfobject.js"></script> <script
         type="text/javascript">
         var params = {
            BGColor: "#FFFFFF"
         };
         var attributes = {
            id: "MultiPowUpload",
            name: "MultiPowUpload"
         };
         var flashvars = {
           uploadUrl: '/flashuploader/FileProcessingScripts/PHP/uploadfiles.php?memberId=43&fileType=Video',
           uploadButtonVisible: "Yes",
           useExternalInterface: "Yes",
           maxFileSize: "6024000",
           maxFileCount: "20",
           maxFileSizeTotal: "20480000",
           backgroundColor: "#FFFFFF",
           buttonTextColor: "#000000",
           buttonBackgroundColor: "#F1F1F1",
           buttonBottomBorderColor: "#E1E1E1",
           buttonTopBorderColor: "#E1E1E1",
           buttonDisabledBackgroundColor: "#FFFFFF",
           buttonDisabledBottomBorderColor: "#DDDDDD",
           buttonDisabledTopBorderColor: "#DDDDDD",
           buttonDisabledTextColor: "#DDDDDD", 
           buttonRollOverBottomBorderColor: "#666666",
           buttonRollOverTopBorderColor: "#666666",
           buttonDownBottomBorderColor: "#000000",
           buttonDownTopBorderColor: "#000000",
           buttonDownBottomBackgroundColor: "#FFFFFF",
           buttonDownTopBackgroundColor: "#FFFFFF",
           listTextSelectedColor: "#000000",
           listTextRollOverColor: "#333333",
           listRollOverColor: "#DDDDDD",
           listDownColor: "#EEEEEE",
           listSelectedUpColor: "#EEEEEE",
           listSelectedRollOverColor: "#D2D2D2",
           listUnuploadedColor: "#777777",
           listUploadedColor: "#FFFFFF",
           progressBarLeftColor: "#BBBBBB",
           progressBarRightColor: "#AAAAAA",
           progressBarLeftBorderColor: "#E1E1E1",
           progressBarRightBorderColor: "#E1E1E1",
           textColor: "#FFFFFF"
         };
         swfobject.embedSWF("/flashuploader/ElementITMultiPowUpload2.1.swf", "MultiPowUpload_holder", "380", "270", "9.0.0", "/flashuploader/expressInstall.swf", flashvars, params, attributes);

     </script></td>
   </tr>
</table>
</div>
</body>

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 14 сентября 2010

Я решил эту проблему, превратив URL в один параметр.Я передаю его (после проверки, что это только строки и приемлемые данные) как один параметр для uploadfiles.phpПо какой-то причине php не понравилось более одного параметра.

0 голосов
/ 11 сентября 2010

Я думаю, что в вашем коде ОЧЕНЬ базовая ошибка (uploadfile.php) ... вы пытаетесь извлечь из неправильных параметров $ _REQUEST ..

Из HTML вы передаете скрытыйзарегистрирован как "uploadscript", и вы пытаетесь получить $ _REQUEST ["fileType"] & $ _REQUEST ["memberId"], который не завершается .. (я не знаю, КАК вы получаете memberID, если он не существует в POST каким-либо образомили другой ..

$uploaddir=realpath(dirname(__FILE__) . '/../../../memberimages/') . '/'.$_REQUEST["memberId"].'/My_Files/'.$_REQUEST["fileType"].'/';

Либо

  1. (ПРЕДПОЧТЕНО) отправьте их в качестве отдельных параметров, как вы хотите их в uploadfile.php ИЛИ
  2. Получите$ _REQUEST ['uploadscript'] затем взорвитесь и работайте над этим ... (noob way)

ТАКЖЕ, как получается, что ваше HIDDEN поле находится вне тега FORM !!

<input name="uploadscript" id="uploadscript" type="hidden" value="/flashuploader/FileProcessingScripts/PHP/uploadfiles.php?memberId=43&fileType=Video" />

Надеюсь, это было полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...