Как получить домашний URL на localhost? - PullRequest
0 голосов
/ 29 августа 2018

Итак, я создаю веб-сайт на моем локальном хосте, имя папки «veco», поэтому моя URL-ссылка http://localhost/veco/

Я сейчас использую этот код, чтобы получить домашний URL "http://localhost/veco/":

<?php 
function home_url() 
{
    // output: /myproject/index.php
    $currentPath = $_SERVER['PHP_SELF']; 

    // output: Array ( [dirname] => /myproject [basename] => index.php [extension] => php [filename] => index ) 
    $pathInfo = pathinfo($currentPath); 

    // output: localhost
    $hostName = $_SERVER['HTTP_HOST']; 

    // output: http://
    $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://';

    // return: http://localhost/myproject/
    return $protocol.$hostName.$pathInfo['dirname']."/";
}
 ?>

Сейчас я на странице "о", мой URL теперь http://localhost/veco/about Теперь на странице about, я сделал форму

  <form action="data/cs_menu.php" method="POST">
    <input type="text" name="f_menu">
    <input type="submit" name="save_menu">
    </form>

Теперь, когда я отправляю эту форму, она перенаправляет меня на http://localhost/veco/about/data/cs_menu.php, что правильно, но когда я использую функцию home_url, она дает мне «http://localhost/veco/data/" not» http://localhost/veco/"

Есть идеи? Я не использую Wordpress прямо сейчас, но если вы знакомы с WordPress, у них есть функция "home_url ();" который возвращает "http://localhost/FILENAME/", который я пытаюсь скопировать.

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Вы можете попробовать это:

<?php echo "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; ?>

И, если вы планируете использовать https, вы можете использовать эту функцию:

function base_url(){
  return sprintf(
  "%s://%s%s",
  isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http',
  $_SERVER['SERVER_NAME'],
  $_SERVER['REQUEST_URI']
 );
}

И назовите это так:

echo url();
#=> http://127.0.0.1/foo

Что касается глобальной переменной $ _SERVER, документы можно найти здесь

Оригинальный ответ был опубликован в этой теме .

Вы должны проверить это и сообщить мне, если это решит вашу проблему. Надеюсь, это поможет.

0 голосов
/ 29 августа 2018

Ребята я наконец нашел решение, оно тоже динамическое. Я только отредактировал свою функцию и добавил это:

   $home_url = (explode("/",$full_url));
   return $home_url[0]."//".$home_url[2]."/".$home_url[3];

Теперь вот полный окончательный код:

function home_url() 
{
    // output: /myproject/index.php
    $currentPath = $_SERVER['PHP_SELF']; 

    // output: Array ( [dirname] => /myproject [basename] => index.php [extension] => php [filename] => index ) 
    $pathInfo = pathinfo($currentPath); 

    // output: localhost
    $hostName = $_SERVER['HTTP_HOST']; 

    // output: http://
    $protocol = strtolower(substr($_SERVER["SERVER_PROTOCOL"],0,5))=='https://'?'https://':'http://';

    // return: http://localhost/myproject/
    $full_url = $protocol.$hostName.$pathInfo['dirname']."/";
    $home_url = (explode("/",$full_url));
    return $home_url[0]."//".$home_url[2]."/".$home_url[3];

}

Там могут быть некоторые ошибки, но пока я их не видел. Если вы можете указать некоторые, пожалуйста, скажите мне. Спасибо

0 голосов
/ 29 августа 2018

Я не использую Wordpress сейчас, но если вы знакомы с Wordpress, у них есть функция "home_url ();"

WordPress ищет значение из базы данных, где оно устанавливается при установке WordPress.

Как правило, нет способа определить URL домашней страницы по произвольной странице сайта. Самое близкое, что вы могли бы получить, это вручную добавить правило для каждой страницы в соответствии с текстом «Домашняя страница ровно на два каталога выше этой страницы».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...