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/' ) ;
}
?>
Esta función te ayudara
http://php.net/manual/es/function.strpos.php
Saludos
Podrias especificarme un poco mas soy novato y no lo entiendo muy bien
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.
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' ) ;
}
?>
<?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' ) ;
}
?>
Tampoco me funciona
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
Sip ya me di cuenta, eso me pasa por no mirar antes xD.
Muchas gracias a los 2 ya me funciono
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?
<?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' ) ;
}
?>
gracias por tu ayuda
<?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:
<?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