Тогда при загрузке файла "myPicture.jpg" в src картинки будет "/image/img/myPicture.jpg", что и требовалось.
А теперь придирки:
1. Переменная называется $uploadDir, что подразумевает папку для загрузок файлов, а на самом деле там путь к файлу.
2. При составлении этого пути не используется даже basename, не говоря уж про более тщательные проверки. Т.е. достаточно при загрузке подделать имя файла указав что это не "myPicture.jpg", а например "../../shellscript.php" и вот он уже загружен не в папку /image/img, а в корень сайта. Можно даже index.php заменить!
3. json все еще без заголовков, но пока работает - фиг с ним.
1. Вы хотите вывести сообщение с ошибкой в интерфейсе, или с какой целью вы делаете эти ваши echo ' - Неизвестная ошибка';? Вы понимаете, что echo "..." отдаст браузеру строку текста а не json?
lexstile: можно конечно, .replace() может принимать в качестве замены не только строку, но и функцию. Ссылку на документацию я приводил же. https://jsfiddle.net/8y6r78k6/3/
Bjornie: Не совсем понятно какая у вас стоит цель. Вам нужна целостность данных или производительность? Приемлимо ли, что часть потомков осталась болтаться без родителя? Может вам вообще on delete cascade подойдет, чтобы потомки-сироты сами удалялись вслед за родителями.
hollanditkzn: Можно и так и этак. При некоторых настройках сервера относительные пути могут чудить, поэтому лучше вычислять абсолютный, на основе $_SERVER['DOCUMENT_ROOT'] или __DIR__ или еще какого-нибудь из пары десятков способов составить этот путь.
hollanditkzn:
1. я в dev-tools браузера могу убрать этот ваш accept. Или могу вообще не через браузер файл отправить, curl'ом, например. И в этом файле может быть не картинка, а shell-скрипт.
2. это уже больше похоже, но, в новом имени файла должен быть еще и путь к папке, куда вы хотите картинку сохранить.
И перед отправкой json желательно заголовок отправить, типа Content-Type: application/json. подробнее посмотрите в примере, который я линканул. Там-же параметры для правильного кодирования всяких проблемных символов в json.
И у вас все еще нет практически никаких проверок. На этапе обучения фиг с ними, но в реальном проекте о безопасности думать придется.
Как это, одновременно работающих? В том-же set_exception_handler можно последовательно их запускать, если ваши обработчики конечно не делают exit(), например.
Дмитрий: Если вы добавите defer ко всем скриптам, то они загрузятся именно в том порядке, в каком прописаны. Но я уверен, что некоторые из них не нужны в первые доли секунды отрисовки страницы. touchswipe.min.js нужен? jquery.maskedinput.min.js тоже нужен с первых мгновений?
Скорее всего их можно грузить с async.
Александр Шибков: Да, в хроме contextmenu перехватывается, а средний клик отслеживается по mousedown, но отменить его не получается, вкладка все равно открывается. Добавил на jsfiddle.
Тогда при загрузке файла "myPicture.jpg" в src картинки будет "/image/img/myPicture.jpg", что и требовалось.
А теперь придирки:
1. Переменная называется $uploadDir, что подразумевает папку для загрузок файлов, а на самом деле там путь к файлу.
2. При составлении этого пути не используется даже basename, не говоря уж про более тщательные проверки. Т.е. достаточно при загрузке подделать имя файла указав что это не "myPicture.jpg", а например "../../shellscript.php" и вот он уже загружен не в папку /image/img, а в корень сайта. Можно даже index.php заменить!
3. json все еще без заголовков, но пока работает - фиг с ним.