[SOURCE] Mensaje antes de header , pop up php , alert antes de header

Iniciado por graphixx, Septiembre 19, 2014, 06:03:10 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Para todos los que han tratado de hacer:
Código: php

  echo "<script type='text/javascript'> alert('serial invalido') </script>";
  header('Location: index.php?qr='.$qr);

Saben que el alert nunca se va a mostrar, para ello se debe hacer:
Código: php

function popup($vMsg,$vDestination) {
echo("<html>\n");
echo("<head>\n");
echo("<title>System Message</title>\n");
echo("<meta http-equiv=\"Content-Type\" content=\"text/html;
charset=iso-8859-1\">\n");

echo("<script language=\"javascript\" type=\"text/javascript\">\n");
echo("alert('$vMsg');\n");
echo("window.location = ('$vDestination');\n");
echo("</script>\n");
echo("</head>\n");
echo("<body>\n");
echo("</body>\n");
echo("</html>\n");
exit;
}

popup('Serial invalido','index.php?qr='.$qr);


Espero que el codigo les sirva :D
Mi Blog Personal
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

graphixx estás equivocado, el alert si se va a mostrar, la funcion header no puede ser llamada cuando el buffer de salida de php no está vacío, llamar a dicha función en dicho caso, resultará con un warning, por lo que hacer un echo antes que un header dará por resultado que el header tire error, y el echo se muestre. En teoría tendrías la razón pero dado este punto de la especificación de la función header no dará el resultado que esperas.

Lo segundo que haz hecho es simplemente crear un código javascript que abra el mensaje y luego envíe una redirección, eso haría exactamente lo que tu esperas que haga, no obstante no es código php.

además tu agregas parentesis al echo, esto sería sintácticamente correcto si el echo fuera una función, pero dado que echo es un constructor del lenguaje, no es necesario el uso de parentesis, y de hecho es preferible no escribirlo.

por otra parte usas comillas dobles parseando cada literal del echo, estoy seguro que lo haces porque los literales no aceptan \n, una forma diferente (más no mejor) de hacerlo es definiendo \n como constante de salto de linea define('CRLF', "\n"); y luego utilizando literales con concatenación.

saludos!