清除PHP页面


Clearing a PHP page

我正在使用一个名为plupload的异步文件上传工具。我在一个独立的页面上按照我想要的方式设置和工作,但我有一个问题。我正在将我的代码转移到一个内容管理系统,该系统将所有每页的PHP存储在一个数据库中——我认为,它还解析PHP片段,以检查所有内容是否无错误。

问题是这样的。我想在上传成功后返回响应。

在一个独立的页面上,我使用die("a response")并在HTML部分之前停止PHP。在这种情况下,我不能,因为CMS仍然会提供页面的其余部分。

我需要将表单提交给自己,因为我正在整合一些非javascript的东西来进行降级的表单验证等。

有人有简单的解决方案吗?我目前正在测试任何异步响应(我的意思是,在帖子发布后),并在完成上传时称之为"成功",如果你理解我的意思的话。我真的不喜欢它。我想知道在任何不成功的情况下(如果可以的话)是否会强迫服务器出错。这会是特别糟糕的做法吗?

如果您愿意覆盖CMS的index.php文件,这将起作用。

  • 将当前的index.php重命名为其他内容。我们说"cms.php"。您可能需要更改权限,以便只有您的服务器才能从中读取
  • 创建一个名为"index.PHP"的新PHP文件。我们使用了PHP手册中include-docs(#6)中的一个示例。这是(修改后的)代码。
    • 注意:压痕太奇怪了,所以我改为粘贴它。随意编辑

如果在网站的任何地方,你想让它失败,你可以把真实的数据粘贴在$GLOBALS['failContent']中,用户永远不会看到任何CMS生成的输出。


我不确定die这样做会有什么效果,但我相信它会阻止我们输出任何东西。。。但我不确定。有人知道吗?

将此代码放入php文件

<?php
$uploaddir='../uploads/';
$uploadfile=mysql_prep($uploaddir.basename($_FILES['uploadfile']['name']));
if(move_uploaded_file($_FILES['uploadfile']['tmp_name'], $uploadfile))
 {
  $name=mysql_prep(($_FILES['uploadfile']['name']));
  $type=mysql_prep(($_FILES['uploadfile']['type']));
  $data=($uploadfile);
  $size= intval($_FILES['uploadfile']['size']);
  #echo $data;
  $branch=mysql_prep($_POST['branch']);
  $sem=mysql_prep($_POST['sem']);
  $query="INSERT INTO upload_file (name,type,data,size,created,branch_id,sem_id) VALUES ('{$name}','{$type}','{$data}','{$size}',NOW(),'{$branch}','{$sem}')";
  $result=mysql_query($query);
  if($result){
      echo"<h2>file successfully uploaded<h2>";
      redirect_to(root."afterlogin/upload.php?spload=0112");
  }
  else{
      echo" the file you insert can't be uploaded";
  }

并将其包含在html文件中

 <?php if(isset($_GET['spload'])){
 $upload_process="you have successfully uploaded your file. ";
 $upr=1;   
  }else{
    $upr=0;
 }
?>

我使用的技术受到了上述MySQL建议的启发。

plupload包含一个FileUploaded事件。

在启动上传并将其与每个文件一起发布之前,我会生成一个随机数。一旦我在服务器端移动完文件(实际上是一个电子邮件附件)——如果邮件发送成功,我会用随机数作为名称,用"success"或类似的词作为内容来写一个小文本文件。然后,当plupload的FileUploaded被触发时,我向一个小型独立PHP文件发出一个新的异步请求,传递相同的随机数,它在取消链接之前读取该文件。

再次感谢您的帮助。看起来工作得很好。