Текущий URL с PHP - PullRequest
       33

Текущий URL с PHP

0 голосов
/ 30 декабря 2010

У меня настроена система сокращения ссылок (Yourls), так что вы можете перейти к короткому URL с ?url=[xyz] (где [xyz] - это URL, который вы хотите сократить), добавленный в конце, сократит URL. Я хочу добавить ссылку на отдельную страницу (на моей вики-странице MediaWiki), которая сокращает постоянную ссылку на страницу, на которой она находится. Мне нужно добавить кнопку в свой шаблон таким образом, чтобы добавить ссылку текущей страницы в ссылку. MediaWiki - это платформа PHP, поэтому она предпочтительна (но JavaScript тоже подойдет). Как я могу это сделать?

(прошу прощения, если это сбивает с толку)

ОБНОВЛЕНИЕ: Я ужасен с PHP, извините. Я просто положил

<?php echo'<a href="http://sumov.co.cc/?url=".$_SERVER["REQUEST_URI"]; class="buttonlink ui-state-default ui-corner-all"><span class="ui-icon ui-icon-newwin"></span>Support &rarr;</a>'; ?>

и это просто перешло на http://sumov.co.cc/?url= (sumov.co.cc - моя короткая ссылка).

Ответы [ 4 ]

0 голосов
/ 30 декабря 2010

Чтобы получить URL:

$url = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

И я рекомендую использовать urlencode( $url ) и urldecode( $url ), чтобы обернуть и развернуть его для безопасной передачи.

0 голосов
/ 30 декабря 2010

Как сказал Бабикер, вернется URI. Я бы предложил отфильтровать или исключить URL. В WordPress есть функция esc_url.

Из ядра WordPress wp-includes / formatting.php строки 2235-2281

   /**
   * Checks and cleans a URL.
   *
   * A number of characters are removed from the URL. If the URL is for displaying
   * (the default behaviour) amperstands are also replaced. The 'clean_url' filter
   * is applied to the returned cleaned URL.
   *
   * @since 2.8.0
   * @uses wp_kses_bad_protocol() To only permit protocols in the URL set
   *        via $protocols or the common ones set in the function.
   *
   * @param string $url The URL to be cleaned.
   * @param array $protocols Optional. An array of acceptable protocols.
   *        Defaults to 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet' if not set.
   * @param string $_context Private. Use esc_url_raw() for database usage.
   * @return string The cleaned $url after the 'clean_url' filter is applied.
   */
  function esc_url( $url, $protocols = null, $_context = 'display' ) {
      $original_url = $url;

     if ( '' == $url )
         return $url;
      $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);
      $strip = array('%0d', '%0a', '%0D', '%0A');
      $url = _deep_replace($strip, $url);
      $url = str_replace(';//', '://', $url);
      /* If the URL doesn't appear to contain a scheme, we
       * presume it needs http:// appended (unless a relative
       * link starting with / or a php file).
       */
      if ( strpos($url, ':') === false &&
         substr( $url, 0, 1 ) != '/' && substr( $url, 0, 1 ) != '#' && !preg_match('/^[a-z0-9-]+?\.php/i', $url) )
         $url = 'http://' . $url;

      // Replace ampersands and single quotes only when displaying.
      if ( 'display' == $_context ) {
          $url = preg_replace('/&([^#])(?![a-z]{2,8};)/', '&#038;$1', $url);
          $url = str_replace( "'", '&#039;', $url );
      }

      if ( !is_array($protocols) )
          $protocols = array ('http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn');
      if ( wp_kses_bad_protocol( $url, $protocols ) != $url )
         return '';

     return apply_filters('clean_url', $url, $original_url, $_context);
 }

Тогда вы запустите <?php esc_url(http://www.example.com".$_SERVER['REQUEST_URI'];) ?>

0 голосов
/ 30 декабря 2010

на вашем месте я бы сократил ваш собственный URL, как сделал (http://tecn.me) Я многому научился и возможности безграничны

0 голосов
/ 30 декабря 2010
"http://www.yoursitesdomainname.com".$_SERVER['REQUEST_URI'];

Предыдущим будет URL текущей страницы. Делайте, как можете с ним.

...