Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Mensaje iniciado por: egiptoelcairo en 31 Mayo 2012, 23:30 PM

Título: Redirreción php
Publicado por: egiptoelcairo en 31 Mayo 2012, 23:30 PM
Hola tengo un codigo para redireccionar a mi web si el cliente procede de otra que realize una fuinción.
el texto que se encuentra en negrita cambia dependiendo del cliente y de la sesion como podria hacer para que sea cuals sea ese codigo en negrita ejecute la primera opcion de redirección.


<?php
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
    $refer = strtolower( $_SERVER['HTTP_REFERER'] );
    switch( $refer ) {
        case 'http://miweb.com/done?sessionid=35655944646764642&pgn_transaction_id=65a465f4a65s465se454f564&pag_status=complete':
         header( 'Location: http://miweb.com/prueba1.php/' ) ;       
    }
}
else {
   header( 'Location: http://miweb.com/prueba2.php/' ) ;       
}
?> 
Título: Re: Redirreción php
Publicado por: it3r en 31 Mayo 2012, 23:34 PM
Esta función te ayudara

http://php.net/manual/es/function.strpos.php

Saludos
Título: Re: Redirreción php
Publicado por: egiptoelcairo en 31 Mayo 2012, 23:37 PM
Podrias especificarme un poco mas soy novato y no lo entiendo muy bien
Título: Re: Redirreción php
Publicado por: WarGhost en 31 Mayo 2012, 23:42 PM
Se puede hacer de varias formas, con la funciona que te dijo it3r seria:

if(strpos($refer, "http://miweb.com/done?sessionid=")===true){

}


Pero te tengo que decir que HTTP_REFERER, no es muy fiable.
Título: Re: Redirreción php
Publicado por: egiptoelcairo en 31 Mayo 2012, 23:50 PM
Que quedaria el codigo asi porque no me funcina

<?php
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
    
$refer strtolower$_SERVER['HTTP_REFERER'] );
    switch( 
$refer ) {
       if(
strpos($refer"http://miweb.com/done?sessionid=")===true){
}
         
header'Location: http://miweb.com/prueba1.php' ) ;       
    }
}
else {
   
header'Location: http://miweb.com/prueba2.php' ) ;        
}
?>
 
Título: Re: Redirreción php
Publicado por: WarGhost en 31 Mayo 2012, 23:52 PM
<?php
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
    
$refer strtolower$_SERVER['HTTP_REFERER'] );
       if(
strpos($refer"http://miweb.com/done?sessionid=")===true){
         
header'Location: http://miweb.com/prueba1.php' ) ;       
     }
}
else {
   
header'Location: http://miweb.com/prueba2.php' ) ;        
}
?>
 
Título: Re: Redirreción php
Publicado por: egiptoelcairo en 31 Mayo 2012, 23:57 PM
Tampoco me funciona
Título: Re: Redirreción php
Publicado por: it3r en 1 Junio 2012, 00:04 AM
Cita de: WarGhost en 31 Mayo 2012, 23:52 PM
<?php
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
    
$refer strtolower$_SERVER['HTTP_REFERER'] );
       if(
strpos($refer"http://miweb.com/done?sessionid=")===true){
         
header'Location: http://miweb.com/prueba1.php' ) ;       
     }
}
else {
   
header'Location: http://miweb.com/prueba2.php' ) ;        
}
?>
 


strpos no devuelve true, devuelve la posición inicial donde se encontró el $refer o false si no se encontró por ende debería ser:


if(strpos($refer, "http://miweb.com/done?sessionid=")!==false)

Saludos
Título: Re: Redirreción php
Publicado por: WarGhost en 1 Junio 2012, 00:05 AM
Sip ya me di cuenta, eso me pasa por no mirar antes xD.
Título: Re: Redirreción php
Publicado por: egiptoelcairo en 1 Junio 2012, 00:09 AM
Muchas gracias a los 2 ya me funciono
Título: Re: Redirreción php
Publicado por: egiptoelcairo en 1 Junio 2012, 01:50 AM
y por ejemplo si lo que quiero es si es direccionado desde esaweb que ejecute un scrip en vez de volver a redirrecionar como quedaria?
Título: Re: Redirreción php
Publicado por: WarGhost en 1 Junio 2012, 12:55 PM
<?php
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
    
$refer strtolower$_SERVER['HTTP_REFERER'] );
       if(
strpos($refer"http://miweb.com/done?sessionid=")!==false){
         
// Aqui el script que tu quieras poner     
     
}
}
else {
   
header'Location: http://miweb.com/prueba2.php' ) ;        
}
?>
 
Título: Re: Redirreción php
Publicado por: egiptoelcairo en 1 Junio 2012, 15:44 PM
gracias por tu ayuda
Título: Re: Redirreción php
Publicado por: [u]nsigned en 1 Junio 2012, 17:15 PM
Código (php) [Seleccionar]
<?php
if ( isset( $_SERVER['HTTP_REFERER']) && stripos($_SERVER['HTTP_REFERER'], "http://localhost/")!==false )
   
header'Location: http://miweb.com/prueba1.php' ) ;exit();
else 
   
header'Location: http://miweb.com/prueba2.php' ) ;exit();
?>


Y para usar un script en lugar de redirigir:

Código (php) [Seleccionar]
<?php
if ( isset( $_SERVER['HTTP_REFERER']) && stripos($_SERVER['HTTP_REFERER'], "http://localhost/")!==false ){
   
//Aca tu codigo PHP
}
else
   
header'Location: http://miweb.com/prueba2.php' ) ;exit();
?>


Mas eficiente. En lugar de usar if's anidados, los combino con 'AND' (comparacion logica). Y en lugar de parsear al HTTP_REFERER a minusculas, y luego llamar a strpos, directamente llamo a stripos que no es case-sensitive  ;).

Acabo de probarlo y funciona.

Y por ultimo, siempre luego de redireccionar con header, luego debemos llamar a la funcion exit() para evitar errores en la cabecera de la respuesta HTTP.

Saludos