No estás registrado (Registrarse)

Vanilla 1.1.10 es un producto de Lussumo. Para más información: Documentación, Soporte.

    •  
      CommentAuthorCMV
    • CommentTimeFeb 17th 2011 editado
     # 1
    La situación es la siguiente:

    El usuario accede a una página Formulario1.php. Cuando esta se va a cargar, se mira con PHP si está activa la opción Formulario2.php (mediante una variable interna), que es un formulario hecho en Ajax. Si está activo, le redirige a Formulario2.php

    Pongamos que Formulario2.php está siempre activo: cuando un usuario con Java accede a la página, se le muestra Formulario2.php sin problema. Si no tiene Java activo, se le muestran las instrucciones de cómo habilitar Java (el típico texto dentro de <noscript>


    Necesitaría que si un usuario no tiene Java activo, en lugar de llegar a que se le muestre el texto de cómo activar Java, se quedara en Formulario1.php.

    ¿Cómo puedo hacerlo? Llevo un rato dándole vueltas y no lo veo.

    Mil gracias
    •  
      CommentAuthorJavi
    • CommentTimeFeb 17th 2011
     # 2
    No entiendo bien

    Usuario entra a formulario1.php

    ¿tiene javascript activo?
    SI-> Enviar a formulario2.php
    NO-> Se quede en el formulario1.php


    Es eso?
    •  
      CommentAuthorCMV
    • CommentTimeFeb 17th 2011 editado
     # 3
    Posted By: Javi¿tiene javascript activo?
    SI-> Enviar a formulario2.php
    NO-> Se quede en el formulario1.php


    Exacto, eso es lo que busco. Ahora en formulario1.php lo primero que se mira es con PHP si está activa la opción formulario2.php (se activa desde panel de admin) y si lo está se redirige a formulario2.php.

    El formulario2 es con Ajax, el formulario1 no usa Java.
    •  
      CommentAuthorJavi
    • CommentTimeFeb 17th 2011
     # 4
    Pues, despues de comprobar si esta activo el formulario2.php, si esta activo escupe con php esto:

    <script>
    document.location.href='http://example.com/formulario2.php';
    </script>


    Digo yo, que si el usuario no tiene javascript activado, no lo redirigirá a ningún lado y se quedará en formulario1.php :first:
    •  
      CommentAuthordominotico
    • CommentTimeFeb 17th 2011 editado
     # 5
    La logica podria ser:

    Al entrar a Formulario1.php:
    Preguntar si Javascript está activo en el browser del usuario
    - Si está activo: preguntar con php si la opcion Formulario2.php esta activada en el Panel
    - Si esta activada , redirigir con javascript (o con php) hacia Formulario2.php

    Si cualquiera de las preguntas da negativo, no hacer nada, y sigue cargando Formulario1.php

    :typeo:
    •  
      CommentAuthorWakka
    • CommentTimeFeb 17th 2011
     # 6
    Posted By: Javi<script>
    document.location.href='http://example.com/formulario2.php';
    </script>


    +1 Esto debería funcionarOfreces o buscas trabajo como redactor freelance?|Fotografías
    •  
      CommentAuthorCMV
    • CommentTimeFeb 17th 2011 editado
     # 7
    Posted By: Javi<script>
    document.location.href='http://example.com/formulario2.php';
    </script>


    Como dato, el código php está arriba de todo de la página de formulario1.php, antes del header y del body. He puesto el código y es como si me lo saltara, es decir, redirige utilizando la siguiente redirección que hay, que está en php, y lleva a un formulario3.php.

    ¿Se te ocurre qué puede ser?

    He puesto arriba de todo del código de la página formulario1.php tal cual esto:
    if (X_ENABLED == 'True'){
    echo "<script>
    document.location.href='http://www.x.com/formulario2.php/'
    </script>";

    }


    La redirección 3 que está en php es con una función del tipo header('Location: ' . $url);
    •  
      CommentAuthorCMV
    • CommentTimeFeb 17th 2011
     # 8
    Bueno veo que claramente el problema está en que las redirecciones que van a continuación de la escrita para Java, como están hechas en PHP (lado del servidor) se ejecutan antes y por eso aunque la de Java esté la primera, las de php mandan.

    ¿Alguna idea?
    •  
      CommentAuthordominotico
    • CommentTimeFeb 17th 2011
     # 9
    Hacer la de javascript tambien en php, usando: header('Location ....) :confuso:
    •  
      CommentAuthorJavi
    • CommentTimeFeb 17th 2011
     # 10
    Posted By: dominoticoHacer la de javascript tambien en php, usando: header('Location ....) :confuso:


    es que la gracia de usar javascript era que si el usuario no lo tenia activado, se quedaba directamente en e lformulario 1 :)
    •  
      CommentAuthorCMV
    • CommentTimeFeb 17th 2011 editado
     # 11
    Estoy probando algo que podría funcionar aunque será seguramente complicarse la vida enormemente.

    Creo un archivo intermedio que se llama antes de cargar ningún formulario, en el que pongo el script de redirección a Formulario2 y como noscript pongo la carga de un iframe que me cargaría el Formulario1.

    Pero no sé yo si me estoy metiendo en un berenjenal de cuidado porque voy a tener que cambiar los encabezados, footer y menus de navegación para que lo que se cargue en el iframe tenga un aspecto correcto :confused: Y se trata además de un proceso de Checkout con varias páginas.
    •  
      CommentAuthordominotico
    • CommentTimeFeb 17th 2011
     # 12
    Encontré este script en php que permite detectar si Javascript esta activado. Con alguna modificacion te podria servir.

    <?php
    if (isset($_POST['jstest'])) {
    $nojs = FALSE;
    } else {
    // create a hidden form and submit it with javascript
    echo '<form name="jsform" id="jsform" method="post" style="display:none">';
    echo '<input name="jstest" type="text" value="true" />';
    echo '<script language="javascript">';
    echo 'document.jsform.submit();';
    echo '</script>';
    echo '</form>';
    // the variable below would be set only if the form wasn't submitted, hence JS is disabled
    $nojs = TRUE;
    }
    if ($nojs) {
    //JS is OFF, do the PHP stuff
    }
    ?>
    •  
      CommentAuthorCMV
    • CommentTimeFeb 17th 2011
     # 13
    Posted By: dominoticopermite detectar si Javascript esta activado


    Muchas gracias dominotico, le voy a echar un ojo y a ver qué se puede hacer, no tiene mala pinta.
    •  
      CommentAuthordominotico
    • CommentTimeFeb 17th 2011 editado
     # 14
    Adaptandolo para tu situacion, al comienzo de Formulario1.php, podrias poner esto:

    <?php
    if (isset($_POST['jstest'])) {
    $js = TRUE;
    } else {
    // create a hidden form and submit it with javascript
    echo '<form name="jsform" id="jsform" method="post" style="display:none">';
    echo '<input name="jstest" type="text" value="true" />';
    echo '<script language="javascript">';
    echo 'document.jsform.submit();';
    echo '</script>';
    echo '</form>';
    // the variable below would be set only if the form wasn't submitted, hence JS is disabled
    $js = FALSE;
    }
    if ($js == TRUE) {
    if (X_ENABLED == 'True') {
    $url = 'http://www.x.com/formulario2.php/';
    header('Location: ' . $url);
    }
    }
    ?>


    Primero testea si javascript esta activado, y si lo está verifica si la otra variable esta seteada, y redirige a formulario2.php.

    Lo acabo de probar localmente, y funciona bien. Redirige a formulario2.php si se cumplen las condiciones. :bigsmile:
    •  
      CommentAuthorJavi
    • CommentTimeFeb 17th 2011
     # 15
    metodo curioso, me lo apunto dominotico :typeo: gracias!
    •  
      CommentAuthordominotico
    • CommentTimeFeb 17th 2011
     # 16
    Posted By: Javimetodo curioso, me lo apunto dominotico :typeo:gracias!

    El merito es de Google ... :meparto::meparto:
    •  
      CommentAuthorCMV
    • CommentTimeFeb 18th 2011
     # 17
    Bueno pues muchas gracias dominotico, ya funciona.

    Al final antes de los formularios paso por un archivo que mira si hay JS o no: si lo hay redirecciona mediante script y si no lo hay redirecciona mediante meta refresh. Lo he tenido que hacer así porque si lo pongo en el Formulario1 directamente, al tener redirecciones en PHP justo después de la comprobación de Java, estas se ejecutan primero y nunca conseguiría redirigir a Formulario2.php.

    Gracias a todos! Es un buen método y sobretodo útil ya que no hay muchas formas de resolverlo :typeo:
    •  
      CommentAuthorJavi
    • CommentTimeFeb 18th 2011
     # 18
    Posted By: dominoticoEl merito es de Google ... :meparto: :meparto:


    gracias por buscarlo entoces :komete4:
    •  
      CommentAuthordominotico
    • CommentTimeFeb 18th 2011
     # 19
    Posted By: CMVBueno pues muchas gracias dominotico, ya funciona.

    Al final antes de los formularios paso por un archivo que mira si hay JS o no: si lo hay redirecciona mediante script y si no lo hay redirecciona mediante meta refresh. Lo he tenido que hacer así porque si lo pongo en el Formulario1 directamente, al tener redirecciones en PHP justo después de la comprobación de Java, estas se ejecutan primero y nunca conseguiría redirigir a Formulario2.php.

    Gracias a todos! Es un buen método y sobretodo útil ya que no hay muchas formas de resolverlo :typeo:

    El script modificado que puse mas arriba me funciona bien poniendolo al comienzo de Formulario1. Simplemente redirecciona a Formulario2 si javascript esta activo, sino sigue adelante cargando Formulario1. No entiendo bien tu dificultad ... La unica redireccion en php esta dentro de un IF, y se ejecuta solamente si javascript esta activado. :que:
    •  
      CommentAuthorCMV
    • CommentTimeFeb 18th 2011
     # 20
    Posted By: dominoticoNo entiendo bien tu dificultad


    Hola dominotico, tras el código tengo otras redirecciones en PHP que se cumplen. Como el Java se ejecuta a posteriori (lado cliente), a pesar de que esté primero en el código, redirecciona antes por la primera redirección PHP posterior al script. De ahí que me haya creado un archivo previo que únicamente contiene el script y redirecciona a un formulario u otro mediante Java o mediante Meta Refresh (para el caso en el que no haya Java enabled).

    Saludos