我遇到了一个问题,我无法在PHP IF-Clause中运行JavaScript。
我有一个简单的上传脚本,我从某处获得并修改它。
现在的问题是,IF-Clause之外的所有JavaScript都在运行,但内部没有任何内容。
继承我的代码:
文件名:upload.php
<?php
$uploadFolder = "uploads/";
$newfolder = $uploadFolder.round(microtime(true))."/";
if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0)
{
$file_extension = pathinfo($_FILES['upl']['name'], PATHINFO_EXTENSION);
$filename = pathinfo($_FILES['upl']['name'], PATHINFO_FILENAME);
$url = "http://example.com";
if(!file_exists($newfolder))
{
mkdir($newfolder, 0777);
}
$newFile = $newfolder.$filename.".".$file_extension;
move_uploaded_file($_FILES['upl']['tmp_name'], $newFile);
$file = fopen($newfolder."who", "a");
$ip=$_SERVER['REMOTE_ADDR'];
echo fwrite($file, $ip);
echo fwrite($file, "\n".date('m/d/Y h:i:s a', time())."\n");
fclose($file);
$nurl = $url."/".$newfolder;
echo "<script>location.href='$nurl'</script>";
}
?>
<html>
<head>
<meta charset="utf-8"/>
<title>SKO-Gaming Upload Form</title>
<!-- Google web fonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Sans+Narrow:400,700" rel='stylesheet' />
<!-- The main CSS file -->
<link href="assets/css/style.css" rel="stylesheet" />
</head>
<body>
<form id="upload" method="post" action="upload.php" enctype="multipart/form-data">
<div id="drop">
Drop Here
<a>Browse</a>
<input type="file" name="upl" multiple />
</div>
<ul>
</ul>
</form>
<!-- JavaScript Includes -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="assets/js/jquery.knob.js"></script>
<!-- jQuery File Upload Dependencies -->
<script src="assets/js/jquery.ui.widget.js"></script>
<script src="assets/js/jquery.iframe-transport.js"></script>
<script src="assets/js/jquery.fileupload.js"></script>
<!-- Our main JS file -->
<script src="assets/js/script.js"></script>
</body>
</html>
如果我将回显的东西(使用javascript)放在if子句之外就可以了,但是我希望用户在文件上传完成后重定向。
问候, 马丁
答案 0 :(得分:1)
为什么要使用Javascript而不是PHP重定向用户? 改变你的回声&#34; ...&#34;与
header('Location: '.$nurl);
exit;
你应该得到你需要的东西。
答案 1 :(得分:0)
假设问题在这里。
echo "<script>location.href='$nurl'</script>";
将其更改为
echo "<script>window.location.href=".$nurl."</script>";
.-&GT;字符串连接。 使用&#34;而不是&#39;
答案 2 :(得分:0)
除了帽子,你说&#34; Nope&#34;对所有答案,是的
header('Location: '.$nurl);
exit;
是您问题的解决方案。这是部分,为什么它不适合你:
echo fwrite($file, $ip);
echo fwrite($file, "\n".date('m/d/Y h:i:s a', time())."\n");
标题前有输出。删除回声,你没事。 (除非你之前有更多的输出。