Так Вы внимательнее посмотрите на свой код. Первые 4 строки и последняя срабатывают вне зависимости от
$_POST['submit']
. Другими словами, при обновлении страницы, вы формируете сокращенную ссылку для пустого
$url
, потом проверяете есть ли
$_POST['submit']
, если есть выводите ссылку, записываете в файлы, если нет то ничего не выводите и не пишите ни в какие файлы, потом пишите ссылку для пустого
$url
в бд. Вас это не смущает? Не надо быть профи, чтобы понять какая это глупая ошибка.
Примерно так должно быть у Вас, чтоб не было ложных срабатываний
↓ ↓ ↓ КОД ↓ ↓ ↓<?php
if ($_POST['submit']) {
$h = "QqWwEeRrTtYyUuIiOoPpAaSsDdFfGgHhJjKkLlZzXxCcVvBbNnMm1234567890"; //Выбираем символы, из которых будет состоять наш рандом
$rand = substr(str_shuffle($h), 0, 5); //создаём ранд. Цифра 5 обозначает длину ранда
$site = "http://test.com/"; //Адрес сайта.
$url = $_POST['url'];
echo "<div class='a'>
<a href='".$site.$rand."'>".$site.$rand."
</a>
</div>"; //выводим пользователю ссылку, в виде ссылки
$f = fopen("a/$rand.php", "w"); //Файл с именем ранда.
fwrite($f, "<?php header('Location: $url') ?>"); //И записываем в код редиректа, с ссылкой которую ввёл пользователь
fclose($f); //Закрываем файл
$fh = fopen(".htaccess", "a"); //Открываем файл .htaccess с дозаписью на последний байт
fwrite($fh, "
RewriteRule ^$rand$ /a/$rand.php"); //Записываем ссылку на файл в каталоге a и её сокращённый вариант, который был дан пользователю.
fclose($fh); //Закрываем файл
$connect->query("INSERT INTO `url` (`url`) VALUES ('".$site.$rand."')");
}