Добавьте s
к протоколу и сделайте его необязательным с ?
. Затем используйте найденное совпадение в header
, чтобы вы знали, какой протокол использовать.
if(!preg_match('/https?:/', $site->url, $protocol))
{
$site->url = $protocol[0] . '//' . $site->url;
}
(вы, вероятно, можете изменить свой разделитель и включить //
с протоколом, чуть меньше конкатенация таким образом)
Несвязанное, но дополнительное примечание, вы подготовлены, заявление небезопасно.
$query = ORM::get_db()->prepare("update `topsite` set hits_out='".$count."' where id='".$site->id."'");
должно быть записано как:
$query = ORM::get_db()->prepare("update `topsite` set hits_out=? where id= ?");
тогда привязка должна быть используемый. В зависимости от драйвера синтаксис может варьироваться, для PDO это будет работать:
$query->execute(array($count, $site->id))
Еще одна несвязанная точка, приращение hits_out
должно быть в SQL, а не PHP. Несколько пользователей могут попасть на страницу одновременно, и вы потеряете счет с вашим текущим подходом. Я рекомендую:
set hits_out = hits_out + 1
вместо select
ing затем:
$count = ($site->hits_out) + 1;