variable valores valor por pasar parĂ¡metros parametros mandar enviar agregar php

php - valores - Obtenga la URL completa, incluida la cadena de consulta y el anclaje



pasar variable en url (7)

Es cierto que no puede pasar datos hash al servidor. pero a veces lo que quieres es obtener una URL con ''#blablabla'' del servidor, como cuando compartes el enlace a alguien con ''#'', pero el sitio necesita iniciar sesión. a continuación hay otra manera de pensar, tal vez no variar detalladamente.

Primero, a veces quieres compartir tu enlace con ''#'', como:

www.so.com#lala

En primer lugar, puede cambiar el uso de su URL javascript y pasar algunos datos con ''?'' y ''#'' al mismo tiempo, como:

www.so.com?foo=lala&&flag=hash#lala

luego, como el ''#'' nerver pasa al servidor, pero puede obtener los datos de $ _GET [''''], como:

if($_GET[''flag''] === ''hash''){ // base url $_SESSION[''url''] = strtok(''http://''.$_SERVER[''HTTP_HOST''].$_SERVER["REQUEST_URI"],"?"); // hash data $_SESSION[''hash''] = $_GET[''foo'']; }

entonces, puedes hacer todo con los datos ''#'', si quieres pasarlo al cliente, puedes:

$url = $_SESSION[''url'']."#".$_SESSION[''hash'']; header("Location:".$url);

Por fin, la url ha vuelto

¿Hay alguna manera de obtener toda la URL utilizada para solicitar la página actual, incluido el ancla (el texto después del # - Puedo estar usando la palabra incorrecta) en las páginas incluidas?

es decir, la página foo.php está incluida en bar.php. Si uso tu solución en foo.php, necesito que diga bar.php? Blarg = a # blahblahblah


Este ejemplo muestra la solicitud de URL completa con port o https

function curPageURL() { $pageURL = ''http''; if(isset($_SERVER["HTTPS"])) if ($_SERVER["HTTPS"] == "on") { $pageURL .= "s"; } $pageURL .= "://"; if ($_SERVER["SERVER_PORT"] != "80") { $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"]; } else { $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]; } return $pageURL; }

uso: echo curPageURL();


No puede: tendrá que escribir el valor del hash en una cookie a través de Javascript para enviarlo al servidor en la solicitud posterior.


Puede pasar el ancla usando la función rawurlencode.

Básicamente, solo necesitas hacer algo como esto:

bar.php?blarg=a<?php echo rawurlencode(''#blahblahblah'')?>


Puede pasar la URL completa, incluido el anclaje (la parte posterior al #), utilizando una función de carga de Javascript que envía esa URL a un punto final Ajax.


No, me temo que no, ya que el hash (la cadena que incluye el #) nunca pasa al servidor, es solo una propiedad de comportamiento del navegador. Sin $_SERVER[''REQUEST_URI''] variable $_SERVER[''REQUEST_URI''] contendrá el resto.

Si realmente necesita saber qué es el hash, deberá usar la propiedad de document.location.hash , que contiene los contenidos del hash (puede insertarlo en un formulario o enviarlo al servidor con un solicitud ajax).


// find out the domain: $domain = $_SERVER[''HTTP_HOST'']; // find out the path to the current file: $path = $_SERVER[''SCRIPT_NAME'']; // find out the QueryString: $queryString = $_SERVER[''QUERY_STRING'']; // put it all together: $url = "http://" . $domain . $path . "?" . $queryString; echo $url; // An alternative way is to use REQUEST_URI instead of both // SCRIPT_NAME and QUERY_STRING, if you don''t need them seperate: $url = "http://" . $domain . $_SERVER[''REQUEST_URI'']; echo $url;