valores valor recorrer puede para obtener multidimensional manejo llenar emplear elemento ejemplos comparar buscar array php validation url redirect

recorrer - obtener el valor de un array php



¿Cuánto tiempo puede ser un argumento de consulta URL? (3)

http://site.com/?status=4387hg843hg89473gh87934h89g734hg8973hg9873hg8973h4987g3h489g7h89h849g5

¿Cuál es el tamaño máximo de status que PHP puede leer?

Deseo pasar mensajes de error / éxito al iniciar sesión o al iniciar sesión, y la única forma en que puedo hacer esto es redireccionando a una URL y anexando los mensajes como argumentos a esa URL.

me gusta:

<?php $errors = array( 1 => ''Password must have between 6 and 20 characters'', 2 => ''User name must contain only A-Z, a-z and 0-9 characters'', 3 => ''Captcha code does not match'', ); $errors = base64_encode(serialize($errors)); header("Location: http://www.example.com/?status={$errors}"); die();

(Si conoce diferentes formas de hacerlo, por favor dígame;)


De acuerdo con RFC2616 Sección 3.2.1 :

El protocolo HTTP no pone ningún límite a priori en la longitud de un URI. Los servidores DEBEN poder manejar el URI de cualquier recurso que prestan servicios, y DEBERÍAN poder manejar URI de longitud ilimitada si proporcionan formularios basados ​​en GET que podrían generar dichos URI. Un servidor DEBERÍA devolver el estado 414 (Request-URI Too Long) si un URI es más largo de lo que el servidor puede manejar (ver sección 10.4.15).

Dicho esto, muchos navegadores no permiten URL de longitud infinita. Por ejemplo, Internet Explorer tiene un límite de 2.083 caracteres .

En su caso, sugeriría usar una variable de sesión para almacenar el error y una vez que se muestre elimínelo.

El archivo que produce los errores:

<?php $errors = array( 1 => ''Password must have between 6 and 20 characters'', 2 => ''User name must contain only A-Z, a-z and 0-9 characters'', 3 => ''Captcha code does not match'', ); session_start(); $_SESSION[''errors''] = $errors; header("Location: http://www.example.com/"); die();

La otra página:

<?php session_start(); if ( ! empty($_SESSION[''errors'']) ) { // Do something with the errors. // Remove the errors from the session so they don''t get displayed again later. unset($_SESSION[''errors'']); }


Esto depende más del navegador del usuario que de cualquier otra cosa. Por ejemplo, Internet Explorer no admite URL que tengan más de 2083 caracteres. PHP debe manejar bien hasta (y mucho) ese límite. Evitar base64_encode (que no es necesario) ayudará. Use urlencode en urlencode lugar (suponiendo que no esté pasando datos binarios).

Estoy seguro de que a las personas les encantaría ayudar con diferentes formas de hacerlo, pero tendrían que proporcionar más código.


Mi sugerencia es usar HTTP POST en lugar de HTTP GET