Сканирование Javascript и PHP на наличие наготы

Я пытаюсь запретить загрузку файлов с наготой на мой сервер. Я нашел в Интернете 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 не установлен, он переходит в else оператора if, и снова js не запускается (нет предупреждения box), а затем файл удаляется. Как я могу запустить javascript для сканирования моей загруженной картинки на наличие наготы? Что я здесь делаю неправильно?

Любая помощь приветствуется!

P.S.

Для тех, кто хотел бы увидеть файл js, выполняющий сканирование: http://pastebin.com/MpG7HntQ


person Alex Bridges    schedule 16.01.2014    source источник
comment
echo '<script type="text/javascript" <src="nude.js">'; должно быть echo '<script type="text/javascript" src="nude.js">'; удаление < перед src.   -  person DutGRIFF    schedule 16.01.2014
comment
Если это решит вашу проблему, я добавлю ее в ответ. Трудно сказать, что еще не так, кроме какого-то уродства, которое можно было бы немного почистить. Я добавлю несколько очисток к ответу, если это устранит вашу проблему.   -  person DutGRIFF    schedule 16.01.2014
comment
Я знаю, что есть много уродства. Я пишу код намного аккуратнее, но это то, что я делаю для своего отца и его веб-сайта. Я просто пытаюсь добавить эту функцию на свой уже закодированный сайт. Это не решило мою проблему, но спасибо!   -  person Alex Bridges    schedule 16.01.2014


Ответы (1)


Проблема в том, что эта строка:

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

Делает не то, что вы думаете.

Когда вы выводите JavaScript через echo(), этот код запускается в браузере или на стороне клиента и не запускается до тех пор, пока после завершения PHP-скрипта.

Вам нужно либо перенести код на PHP, либо использовать вызов AJAX, чтобы сообщить о достоверности изображений.

person WildcardSearch    schedule 16.01.2014
comment
Любая идея о том, что проще/как сделать один из них? - person Alex Bridges; 16.01.2014
comment
Это зависит - вообще говоря, я не люблю зависить от JS для функциональности, поэтому, если бы это было мое приложение, я бы хотел иметь скрипт на стороне PHP, способный делать все, что проверяет ваш скрипт. . Однако самым простым из двух способов будет проверка загруженного изображения перед загрузкой. Вы должны иметь возможность изменить код здесь - person WildcardSearch; 16.01.2014
comment
Я действительно нашел версию php и заставил ее работать. Единственная проблема, которая у меня есть сейчас, это то, что я не знаю, как предупредить пользователя, почему фотография не загружается. Он просто перезагружает страницу. Любые идеи Как сообщить клиенту, что php нашел наготу на картинке? Мне просто нужен какой-то ящик сообщений или что-то в этом роде. pastebin.com/HsdBCB3S — это PHP pastebin.com/7jy6baXV — это HTML - person Alex Bridges; 16.01.2014
comment
Возвращать сообщение обратно пользователю можно несколькими способами. Вы можете передать код ошибки через $_GET на перенаправленную страницу: header("Location: index.php?error=1'); и затем интерпретировать его, или вы можете сохранить флэш-сообщения в таблице базы данных и вызывать их при каждой загрузке страницы. - person WildcardSearch; 16.01.2014
comment
Я уже показал вам: header("Location: index.php?error=1'); . . . затем при загрузке страницы проверьте if (isset($_GET['error'])) { // do something } - person WildcardSearch; 16.01.2014
comment
Что не так с этим кодом? Он все еще просто перезагружает страницу. pastebin.com/4C6V83cG - person Alex Bridges; 16.01.2014
comment
Вы немедленно (или после сна 5) перенаправляете пользователя - вместо этого покажите сообщение об ошибке в верхней части страницы (только если есть ошибка c), а затем продолжите нормальное отображение страницы. Кроме того, вы можете принять мой ответ :-/ - person WildcardSearch; 16.01.2014