代码之家  ›  专栏  ›  技术社区  ›  Mechlar

无法在PHP中传递参数

  •  0
  • Mechlar  · 技术社区  · 14 年前

    我是一个非常了解PHP的javascript用户(尽管这个问题并不深入)。

    我正在将URL中的两个不同变量从一个文件传递到另一个文件。一个通过得很好,而另一个没有。

    我有两个文件。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”为空。我确信这与我在upload.php上用php向url添加参数的方式有关,但是我没有主意。

    这里是upload.php生成并返回的HTML。您可以在第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 回复  |  直到 14 年前
        1
  •  0
  •   Accilies    14 年前

    我认为你的代码中有一个非常基本的错误(uploadfile.php)。您试图从$\u请求错误的参数中检索。

    从HTML中,您将以“uploadscript”的形式传递隐藏文件,并尝试获取不退出的$_request[“filetype”]&$_request[“memberid”]。(我不知道你是如何获得会员ID的,除非它以某种方式存在于帖子中。)

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

    要么

    1. (首选)将它们作为单独的参数发送到uploadfile.php中。 或
    2. 接收$_请求['uploadscript']然后分解并处理它…(诺布道)

    另外,您的隐藏字段是如何在表单标记之外的!!

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

    希望有帮助。

        2
  •  0
  •   Mechlar    14 年前

    我通过将URL变成一个参数来解决这个问题。我把它作为一个参数传递给uploadfiles.php(在确认它只是字符串和可接受的数据之后)。出于某种原因,PHP不喜欢多个参数。

    推荐文章