2017-02-28 26 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

嗯 - 它只顯示上傳失敗 - 它不顯示任何錯誤消息。 –