En esta oportunidad les voy a enseñar una manera de recoger y enviar la URL a través de un formulario.

Voy a utilizar el array $_SERVER y dentro colocare el HTTP_REFERER que emplea el agente de usuario para la pagina actual.

en mi PHP que recibe y envia el formulario quedaria asi:

Código PHP :

$sUrl= $_POST['url'] = $_SERVER['HTTP_REFERER'];


Quizás pueda servir para encontrar rápidamente la pagina desde donde se envió el formulario.
A mi me ayudo cuando manejaba una tienda en linea la cual tenia mas de 400 productos en linea y por este método, los ubicaba al instante, bueno ustedes le pueden dar el uso que deseen.

NOTA: Utilice la versión de Google Crohme 18, el cual soporta la validación nativa de HTML5 , que es con la cual valida el formulario.

Bueno vamos al tutorial.

Primero creo la pagina para mi formulario de contacto, la cual llamo index.php :

Código HTML :

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Recoger URL con PHP</title>
<link href="css/estilos.css" rel="stylesheet" type="text/css">
</head>

<body>

<form action="php/enviar.php" method="post">
  <input type="hidden" name="email"/>
                <input type="hidden" name="asunto" value="Ejemplo, recoger URL con PHP"/>
                    
<label>Ingresa tu Nombre :</label><br/>
<input type="text" name="nombre" title="Se necesita un nombre" required>

<br/><br/>

<label>Ingresa Tu E-mail para enviar la URL :</label><br/>
<input type="text" name="email" title="Utiliza un correo v&aacute;lido" required>
@ 
<input name="clientemail" type="text" title="Utiliza un correo v&aacute;lido" required>
<br/><br/>
 
<input name="enviar" type="submit" class="botonform" id="enviar" value="Enviar">
<input name="limpiar" type="reset" class="botonform" id="limpiar" value="Limpiar">

</form>

</body>
</html>





Luego creo mi archivo PHP que procesa y envía la información, lo voy a llamar enviar.php :


Código PHP :


<?
   
// En esta sección se declaran las variables
   
   $sPlace = $_POST['place'];
   $sEmail = $_POST['email'];
   $sClientemail = $_POST['clientemail'];
   $sAsunto = $_POST['asunto'];
   $sMensaje = $_POST['mensaje'];
   $sNombre = $_POST['nombre'];   
   $sUrl= $_POST['url'] = $_SERVER['HTTP_REFERER'];
   
//Aca se ponen los datos del remitente
$myname = $sNombre; 
$myemail = $sEmail;

//Aca se cambia la dirección de correo del destinatario
$contactemail1 = $sEmail.'@'.$sClientemail;

$sTitulo = "Datos recibidos de ".$myname."<p>";
$sDetalles = "Asunto : ".$sAsunto."<br>"."E-mail : ".$sEmail."@".$sClientemail."<br>"."URL: ".$sUrl."<br>";

$message = $sTitulo.$sDetalles; 
$subject = $sAsunto; 

$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "From: ".$myname." <".$myemail.">\r\n"; 
$headers .= "To: ".$contactname1." <".$contactemail1.">\r\n";
mail($contactname1, $subject, $message, $headers);

?>
<script text type="text/javascript">
   location.href = "ok.php";
</script>


Puede ver en el código PHP que estoy recogiendo la URL y la meto en la variable $sUrl, para luego enviarla y mostrarla en el correo:

$sTitulo = "Datos recibidos de ".$myname."<p>";
$sDetalles = "Asunto : ".$sAsunto."<br>"."E-mail : ".$sEmail."@".$sClientemail."<br>"."URL: ".$sUrl."<br>";


Ahora creo unas pocas lineas de código CSS para mi estilizar mi formulario, creo un archivo llamado estilos.css :

Código CSS :

 input:invalid {
    border: 1px solid red;
  }


   /* Estilo por defecto */
  input:required:invalid {
    border: 1px solid red;
  }

  input:required:valid {
    border: 1px solid green;
  }
  
.botonform {
   font-family: Arial, Helvetica, sans-serif;
   color: #FFF;
   background-color: #333;
   border-top-style: none;
   border-right-style: none;
   border-bottom-style: none;
   border-left-style: none;
   padding-top: 5px;
   padding-right: 10px;
   padding-bottom: 5px;
   padding-left: 10px;
   cursor: pointer;
}
.rojita {
   color: #F00;
}




Por ultimo creo una pagina que muestra el mensaje de "Enviado ! " , que se va mostrar una ves que mi formulario haya sido enviado sin problenas, lo guardo con el nombre: ok.php :

Código HTML :

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>ok</title>
</head>

<body>

<h2> Enviado !</h2>

</body>
</html>



Listo eso es todo !

Ustedes me dirán porque, puse los inputs de el correo en dos partes, lo que paso es que mi jefe lo quería así, según el obligaba a que el usuario escriba su correo, trate de convencerlo pero era bien terco, bueno lo deje así y nunca decidí cambiarlo, pero ustedes lo pueden hacer, les dejo a su criterio, al menos ya esta la idea.

Les dejo una DEMO para que puedan ver un ejemplo en funcionamiento (Ingresa tu correo para que te llegue la URL y puedas ver el ejemplo adecuadamente):

http://jrcl.16mb.com/tutoriales/recoger_url_con_php/

Ademas les dejo el manual de PHP en donde puedes encontrar mas información sobre $_SERVER['HTTP_REFERER']; :

http://php.net/manual/es/reserved.variables.server.php

Espero les haya gustado !