我试图不允许将裸露的文件上传到服务器。我在网上找到了javascript,它将扫描照片中的裸露内容。它带有演示图片以及html文件和js文件。我正在使用PHP上传文件,但如果扫描发现该图片有裸露之处,我将无法解决。

这是我的代码示例:

$q= "insert into $table values('', '$email', '$aim', '$icq', '$yahoo', '$homepage', '0', '0', '0', '0', '0', '0', '', now(),'$myip','$email2','$password','$title','$download','$approved','$allowdelete','$author','$facebook','$piclink','$domain','$option3','$secret')";
    $result = mysql_query($q) or die("Failed: $sql - ".mysql_error());
    $q = "select max(id) from $table";
    $result = mysql_query($q);
    $resrow = mysql_fetch_row($result);
    $id = $resrow[0];
    $file = $_FILES['file']['name'];
    move_uploaded_file($_FILES['file']['tmp_name'], "pics/".$id.".".$picext);
    $picfile=$id.".".$picext;
    echo '<script type="text/javascript" <src="nude.js">';
    echo 'nude.load("pics/".<? echo $picfile; ?>);nude.scan(function(result){if(!result){ <? $nude = false; ?>;}else{ $nude = true;}})';
    echo '</script>';
if ($nude === false) {
    $q = "update $table set picfile = '".$id.".".$picext."' where id='$id'";
    $result = mysql_query($q);
    Header("Location: index.php?id=$id");
    } else{
    echo '<script type="text/javascript">';
    echo 'alert("Nudity found. Please try again.")';
    echo '</script>';
    $q = "delete from $table where id='$id'";
    $result = mysql_query($q);
    unlink("pics/".$picfile);
    Header("Location: new2.php");
    }


该代码上传了文件,然后应该检查文件中的裸露并将其删除,并告诉用户如果发现裸露,请重试。如果找不到裸体,则会将用户带到网站的主页。(这是添加新的照片页面)。所有的PHP都运行良好,但是由于javascript似乎没有运行我上传的文件,然后由于未设置$ nude,因此它将进入if语句的else,并且js再次不运行(无警报)框),然后删除文件。如何使javascript运行以扫描上传的图片中的裸露内容?我在这里做错了什么?

任何帮助是极大的赞赏!

附言

对于那些想查看正在执行扫描的js文件的人:http://pastebin.com/MpG7HntQ

最佳答案

问题是这一行:

echo 'nude.load("pics/".<? echo $picfile; ?>);nude.scan(function(result){if(!result){ <? $nude = false; ?>;}else{ $nude = true;}})';


不按照您的想法去做。

通过echo()输出JavaScript时,该代码在浏览器或客户端运行,直到PHP脚本完成后才运行。

您将需要将代码移植到PHP或使用AJAX调用来报告图像的有效性。

09-18 17:05