2017-02-28 30 views
-2

我有一个问题,我不能让JavaScript在PHP IF-Clauses中运行。Javascript不能在PHP中执行if-clause

我有一个简单的上传脚本,我从某处获得并对其进行了修改。

现在的问题是,IF-Clause之外的JavaScript的每一个位都运行,但内部没有任何东西。

继承人我的代码:

文件名:upload.php的

<?php 
 
$uploadFolder = "uploads/"; 
 
$newfolder = $uploadFolder.round(microtime(true))."/"; 
 
if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0) 
 
{ 
 
\t $file_extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION); 
 
\t $filename = pathinfo($_FILES['upl']['name'], PATHINFO_FILENAME); 
 
\t $url = "http://example.com"; 
 
\t if(!file_exists($newfolder)) 
 
\t { 
 
\t \t mkdir($newfolder, 0777); 
 
\t } 
 
\t $newFile = $newfolder.$filename.".".$file_extension; 
 
\t move_uploaded_file($_FILES['upl']['tmp_name'], $newFile); 
 
\t $file = fopen($newfolder."who", "a"); 
 
\t $ip=$_SERVER['REMOTE_ADDR']; 
 
\t echo fwrite($file, $ip); 
 
\t echo fwrite($file, "\n".date('m/d/Y h:i:s a', time())."\n"); 
 
\t fclose($file); 
 
\t $nurl = $url."/".$newfolder; 
 
\t echo "<script>location.href='$nurl'</script>"; 
 
} 
 
?> 
 

 
<html> 
 

 
\t <head> 
 
\t \t <meta charset="utf-8"/> 
 
\t \t <title>SKO-Gaming Upload Form</title> 
 

 
\t \t <!-- Google web fonts --> 
 
\t \t <link href="http://fonts.googleapis.com/css?family=PT+Sans+Narrow:400,700" rel='stylesheet' /> 
 

 
\t \t <!-- The main CSS file --> 
 
\t \t <link href="assets/css/style.css" rel="stylesheet" /> 
 
\t </head> 
 

 
\t <body> 
 
\t \t <form id="upload" method="post" action="upload.php" enctype="multipart/form-data"> 
 
\t \t \t <div id="drop"> 
 
\t \t \t \t Drop Here 
 
\t \t \t \t <a>Browse</a> 
 
\t \t \t \t <input type="file" name="upl" multiple /> 
 
\t \t \t </div> 
 

 
\t \t \t <ul> 
 

 
\t \t \t </ul> 
 

 
\t \t </form> 
 
     
 
\t \t <!-- JavaScript Includes --> 
 
\t \t <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
\t \t <script src="assets/js/jquery.knob.js"></script> 
 

 
\t \t <!-- jQuery File Upload Dependencies --> 
 
\t \t <script src="assets/js/jquery.ui.widget.js"></script> 
 
\t \t <script src="assets/js/jquery.iframe-transport.js"></script> 
 
\t \t <script src="assets/js/jquery.fileupload.js"></script> 
 
\t \t 
 
\t \t <!-- Our main JS file --> 
 
\t \t <script src="assets/js/script.js"></script> 
 

 
\t </body> 
 
</html>

如果我把回声东西(使用JavaScript),它的工作原理,如果从句之外,但我希望用户在文件上传完成后重定向。

问候, 马丁

+1

使用'header' php函数 –

+0

header php函数也只在if子句之外工作 - 我不知道怎么使用它 –

+1

你是否检查过你输入if-子句? –

回答

0

假设的问题就在这里。

echo "<script>location.href='$nurl'</script>"; 

它变化到

echo "<script>window.location.href=".$nurl."</script>"; 

- >串串连。 使用“而不是“

+0

不是 - 即使我将其改为window.location.href并将其更改为“。$ nurl”,但它仍然不起作用。仅当我将它放在if子句之外(但“location.href”也在工作时) –

1

为什么你要使用JavaScript重定向用户,而不是PHP? 更改您的回声”与

header('Location: '.$nurl); 
exit; 

...”,你应该得到你所需要的。

+0

Nope - 使用标题我工作的唯一方法是使用javascript,但不在if子句中 –

+0

如果我把标题放在if-clau之外它也适用 - 但不在if子句中 –

+0

有理由为什么它不应该如你所期望的那样工作: 1)你没有进入IF子句 2)你在头函数之前打印了一些东西,所以这个函数提出“警告:不能修改标题信息 - 已经发送的标题”。添加一个“ini_set('display_errors',1);”在PHP脚本开放后,你会得到更多关于这个问题的细节。 –

0

除了帽子你说“不”给所有的答案,是

header('Location: '.$nurl); 
exit; 

是解决你的问题。这里是一部分,为什么不为你工作:

echo fwrite($file, $ip); 
echo fwrite($file, "\n".date('m/d/Y h:i:s a', time())."\n"); 

你的头部之前有你的输出。删除回声,你很好。 (除了你之前有更多的输出)

+0

我删除了回声的东西,但它仍然无法正常工作。它甚至告诉我现在上传出现了错误。 –

+0

它是什么意思? –

+0

嗯 - 它只显示上传失败 - 它不显示任何错误消息。 –