Foro de elhacker.net

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:

Código:
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

Código:
<?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
Código:
<?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
Código:
<?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:


Código:
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
Código:
<?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
  1. <?php
  2. if ( isset( $_SERVER['HTTP_REFERER']) && stripos($_SERVER['HTTP_REFERER'], "http://localhost/")!==false )
  3.   header( 'Location: http://miweb.com/prueba1.php' ) ;exit();
  4. else
  5.   header( 'Location: http://miweb.com/prueba2.php' ) ;exit();
  6. ?>

Y para usar un script en lugar de redirigir:

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

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