Кроме различия "интерфейса" - на самом деле это DE (т.е. не просто картинки - а еще и сопутствующий софт и библиотеки для него) - никаких принципиальных различий нет.
Для начала скачать попробуйте через file_get_contents. Может там защита от "хотлинкинга" и оно без правильного referer фигу выдает. Или нужен правильный user-agent. Мало ли, короче
Там нечего толком изучать. Всё интуитивно понятно, разок доку прочитать достаточно.
А вот стоит ли использовать при наличии современных фреймворков(или совместно с ними) - это уже отдельный вопрос.
Интересно, пользователей такой алерт бесить не будет? Можно просто подкрасить инпут, или анимашку написать, типа инпут дергаться начинает.
Вообще, надо просто внутри ветки if вместо replace сделать то, что Вам нужно, тот же алерт вызвать. Чтоб осуществить мое предложение - просто добавить класс какой-то, а в ветке else убрать его. На это класс в css написать что-то из предложенного.
Потому что в панели на вкладке Elements не код, DOM-структура страницы, уже после того как отработали все скрипты.
Даже если нет ни одного скрипта, форматирование и особенности отображения могут отличаться от исходника страницы.
На heroku нельзя использовать файлы, так как используется виртуальная файловая система, которая минимум раз в сутки перезапускается. Об этом они сразу предупреждают в описании. На heroku предоставляется база даже в случае бесплатного доступа для обучения, правда всего 5Мб вроде в пакете hobby-dev. Остальные варианты за деньги также можно. Если же вам нужно обязательно использовать файл sqlite - то тогда надо искать другой хостинг, heroku не подойдет.
Скорее второе. Поддающийся тонкой настройке. Слово hack первоначально означало не "взламывать", а что-то типа "врубаться", "глубоко разбираться в теме".
Если нужно именно точки по окружности размещать, то проще всего делать это в полярной системе координат. Формулы для пересчёта такие:
x = R*cos(phi) + x0
y = R*sin(phi) + y0
,где R - радиус окружности, phi - угол поворота от оси x против часовой стрелки, центр окружности находится в точке M(x0, y0). Соответственно если нужно N точек, то phi = (0,1,2...N-1)*(2*pi/N)