Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   abriendo url desde la misma página (https://www.clubdelphi.com/foros/showthread.php?t=45667)

maximo_nashir 10-07-2007 23:02:42

abriendo url desde la misma página
 
:) Les escribo esto porque me dió lucha conseguir abrir una página y ahora que lo conseguí aquí les muestro la forma de abrir una página:

require('http://mydirecciónURL'); //Abre la página que le digamos...
exit();//Limpia la página anterior que estaba y permite que la que hemos llamado se presente sola...


cualquier pregunta me pueden escribir... aunque soy un novato, me gusta ayudar en lo poco que se...:p

dec 10-07-2007 23:32:10

Hola,

Bueno. En realidad con "require" lo que se hace es "requerir" un archivo o Script. No se trata de "abrir una página", sino de "incrustar" el contenido del archivo o Script requerido en donde se encuentre el "require" correspondiente.

Si entiendo bien "abrir" una página más bien suena a "redirigir al usuario" a una página. En este caso suele emplearse la función "header" de PHP. En cuanto al "exit", se utiliza para "terminar" la ejecución de un Script.

Pero no creas, yo también soy un novato en estos menesteres (en realidad no sé en qué no lo soy), así que ahora vendrán los maestros a enmendarnos la plana a ambos. :)

maximo_nashir 10-07-2007 23:40:35

Hola David, se que lo que dices es así, pero estoy usando Delphi for PHP Version 1.0.1.414 y a la hora de la verdad no funciona como deberían funcionar y por eso he puesto estas funciones en sustitución del header o del fopen o del opendir, etc.

dec 10-07-2007 23:42:46

Hola,

Hombre. Pero eso cómo se come. Si entendemos lo mismo por "abrir una página", es decir, si concluimos que esto quiere decir "llevar al usuario a una página distinta de la que está viendo", entonces, creo que la función "header" es lo suyo, y no creo que Delphi for PHP impida el uso ni de esta ni de otra función de PHP. Vamos, digo yo, ¿eh? :)

Edito: no se trata de usar la función "header" sin más... se trata de indicar de añadir a las cabeceras HTTP una ("Location") que se encargue de redirigir al usuario, concretamente el asunto quedaría más o menos así:

Código PHP:

header('Location: http://www.clubdelphi.com/'); 

Y conste que "redirigir" es una forma de hablar, puesto que podríamos indicar esto expresamente mediante otra cabecera HTTP y entonces el asunto nos quedaría así:

Código PHP:

header("HTTP/1.1 301 Moved Permanently");
header('Location: http://www.clubdelphi.com/'); 


lucasarts_18 11-07-2007 03:55:11

Hola:

Dec, siento entrometerme en esto...:D, pero a nuestro amigo dice que header no le funciona, pues a mí tampoco me funciona en la forma que lo escribes, es decir el location lo usas con apostrofes y no con comillas dobles, ¡vamos! que esto a mí no me resulta :eek:, es decir es como si php ignorara el contenido de header si no tiene las comillas dobles en el argumento de la función header, pasa de largo por todo el script.

En realidad no sé si será algo de ese archivito llamado ini :D, puede que a nuestro amigo le pase exactamente lo mismo.

Bueno, espero no estar meando fuera de tiesto...:D:D:D:D y por cierto en la documentación de php, está escrito de ambas formas.

Saludos.

Hasta Luego .-

dec 11-07-2007 03:58:47

Hola,

Bueno. El escribir una vez con comillas simples y otra con dobles comillas, obviamente, es un "error" mía, empero, debería funcionarte igual en todo caso. Únicamente si usas una variable (y forzando un poco el asunto) tendrás que utilizar comillas dobles, de modo que la variable se "expanda" correctamente.

Pero, ya digo, en otro caso el uso de comillas simples o dobles no debería influir, hasta donde yo llego. :)

lucasarts_18 11-07-2007 04:19:03

Cita:

Empezado por dec
Pero, ya digo, en otro caso el uso de comillas simples o dobles no debería influir, hasta donde yo llego. :)

En mi lugar de trabajo, no funciona con comillas simples (pasa de largo por todo el script, aún teniendo su debido exit), echaré un vistazo acá en mi casa para ver que tal.

Gracias.

Hasta Luego .-

dec 11-07-2007 04:26:30

Hola,

Hombre, no están las cosas como para poner las manos en el fuego, pero, es que no hay razón para que no funcione. La función "header" requiere una cadena como parámetro, y, en PHP una cadena puede estar entrecomillada con comillas simples o dobles. No hay tío páseme usté el río. Ahora, que si no funciona, pues oye, no funciona... :D :D :D

dec 11-07-2007 04:36:03

Hola,

Mira tú por dónde de lo que se entera uno:

Cita:

Empezado por función Header de PHP

(Hablando de distintos casos especiales de uso de "Header")

El segundo caso especial es la cabecera "Location:". No solo envía esta cabecera de vuelta al navegador, sino que también devuelve un código de status REDIRECT (302) al navegador a menos que algún código de status 3xx haya sido enviado ya.

Esto quiere decir que acaso podríamos evitarnos:

Cita:

Empezado por yo mismo
Código PHP:

header("HTTP/1.1 301 Moved Permanently"); 


Pero, no es así; debe haber alguna diferencia entre el código 301 y el 302. Ahora bien, aquí está:

Cita:

Redirection 3xx

The codes in this section indicate action to be taken (normally automatically) by the client in order to fulfill the request.

Moved 301

The data requested has been assigned a new URI, the change is permanent. (N.B. this is an optimisation, which must, pragmatically, be included in this definition. Browsers with link editing capabiliy should automatically relink to the new reference, where possible)

The response contains one or more header lines of the form

URI: <url> String CrLf


Which specify alternative addresses for the object in question. The String is an optional comment field. If the response is to indicate a set of variants which each correspond to the requested URI, then the multipart/alternative wrapping may be used to distinguish different sets

Found 302

The data requested actually resides under a different URL, however, the redirection may be altered on occasion (when making links to these kinds of document, the browser should default to using the Udi of the redirection document, but have the option of linking to the final document) as for "Forward".

The response format is the same as for Moved .

maximo_nashir 11-07-2007 04:39:26

Dec, tenías razón con el header, es que yo no le estaba poniendo la palabra "location:" a dicha función, así que gracias de todas maneras, si de camino sabes como abrir la url pero desde una nueva ventana, pues te lo agradecería...

dec 11-07-2007 04:46:02

Hola,

Pues me parece que con el caballero PHP no puedes hacer lo que dices, ahora bien, para eso puede salir el paladín JavaScript en nuestra ayuda. Se me ocurre que puedes "escupir" (huy, qué mal ha quedado) un documento HTML que contenga el código JavaScript necesario para abrir una nueva ventana.

Este código podría ejecutarse a partir del evento "onload" del elemento "body" del documento HTML. Podrías usar el método "open" de la clase "window" del objeto "document". Ahora bien, todo esto de que hablo no tiene tiene que ver con PHP, sino que tratamos con JavaScript.

Y no sé yo si el resultado sería el que tú esperas. Es decir, si es un Script PHP quien imprime o da salida al código HTML y JavaScript necesario para hacer lo que te comento, siempre se quedaría esa misma salida ahí... además de la nueva página abierta. Podría, tal vez, tratarse de cerrar la página "primera" desde la "segunda", pero, me parece que nos meteríamos en camisas de once varas.

Si lo que quieres es que desde un enlace, al hacer clic en el mismo, se abra una nueva ventana... entonces no te hace falta para nada PHP, o sea, puede conseguirse directamente con JavaScript, y eso por no usar ya el obsoleto atributo "target" de la etiqueta "A" de HTML. No sé. A ver qué te parece de todo este rollo que he soltado. :)

lucasarts_18 11-07-2007 04:46:17

Cita:

Empezado por maximo_nashir
si de camino sabes como abrir la url pero desde una nueva ventana, pues te lo agradecería...

No sé si se podrá en php, pero en html target="_blank" es un atributo de la etiqueta <href>,pueda que te sirva.

Hasta Luego .-

dec 11-07-2007 04:51:50

Hola,

Bueno... parece que me he pasado al declarar "obsoleto" al atributo "target"... a mí me suena que sí que es obsoleto, pero, parece que en la especificación de HTML no lo es... y yo realmente ignoro sin en XHTML es o no es obsoleto este atributo. Pero veamos que dice un maestro:

Cita:

Empezado por TierraDeNomadas.com
La especificación HTML admite el atributo target únicamente en documentos que hacen uso de marcos. (...)

Ahora bien, conviene leer lo que pone a continuación. :)

lucasarts_18 11-07-2007 04:58:56

Interesante dec.

Código:

<a href="destino.html" onclick="window.open(this.href);return false;">
Pensé en tal atributo onclick solo existía en los eventos tipo botones o caja de texto, jamás pensé que podría a aplicarse a un atributo de enlace.

Gracias por guiarnos a seguir los estándares...:)

Hasta Luego .-

maximo_nashir 11-07-2007 05:35:15

Ok, entiendo, pero no puedo hacerlo desde mi página php que es la que ya tengo creada?, porque probé el código "window.open" de java pero no me funciona y esos códigos de HTML, tengo que cambiar mi projecto de PHP a HTML para que me funcione o cómo le hago?

lucasarts_18 11-07-2007 06:04:23

No entiendo el por qué, me imagino que tienes embebido código php dentro de html, de ser así debes determinar dentro de tu script cuando ejecutar el código html.

Código PHP:


<?php
if ($opcion == 1)
   echo 
"<a href='nueva_pagina.php' onclick='window.open(this.href);return false;'>"
else{
   ....
   ....
}
?>

es solo una idea, el anterior script es solo un garabato, un bosquejo...:)

Trato de trasmitirte cual es la idea, jeje.

Hasta Luego .-

maximo_nashir 11-07-2007 06:19:12

uuuaaaaaooooo, ustedes saben mucho, graciasss, me resultó super bien, espero no se molesten porque mañana vendré con más preguntas, pero hoy me acuesto tranquilo porque he resuleto ya estos detalles que me estaban trancando el paso... Gracias :-º)

maximo_nashir 11-07-2007 06:37:08

lucas, pero estoy viendo un pequeño detalle, con el código que pusiste, se que fué un ejemplo, pero lo pegué así mismo y se me está ejecutando cada vez que doy un click a cualdquier parte de la página y yo solo quiero que se ejecute cuando presione click en un menú.

Mira, este es el código que tengo en mi menú de prueba:

if ($params['tag']==1)
{
print('Acaba de pinchar el Link de Conf. Impr.');
}
if ($params['tag']==2)
{

?>
<a href="Usuarios.php" onclick="window.open(this.href);return false;">
<?php

}
if ($params['tag']==3)
$this->Label2->Caption = "Acaba de pinchar el Link de Parámetros";
if ($params['tag']==4)
exit();

lucasarts_18 11-07-2007 15:36:57

Vamos por parte, ok. el paso de cualquier variable ya sea por url, por POST o por GET hay 3 formas de obtener esos valores.
  1. $_GET['nombre_variable']
  2. $_POST['nombre_variable']
  3. $_REQUEST['nombre_variable']
Cabe decir que con GET y POST el formulario debe tener el atributo tal como se reciben aquellas variables, es decir, si tu formulario es POST debes recibirlo mediante $_POST, ahora para las URL yo utilizo $_REQUEST, por otra parte desconozco $params, pero de existir creo que que php no lo reconocería de tal forma, intenta con $_PARAMS.

maximo_nashir 11-07-2007 23:49:09

Hola,
 
el $params viene de la opción que te ofrece el componente MainMenu de Delphi4PHP. Pero, después que le doy click a la segunda opción ya no le puedo dar click a nada porque todo lo que hace después de ese momento es llamar la página de usuarios...

Mira, aquí le paso el codigo más completo:

function MainMenu1Click($sender, $params)
{

if ($params['tag']==1)
{
print('Acaba de pinchar el Link de Conf. Impr.');
}
if ($params['tag']==2)
{

?>
<a href="Usuarios.php" onclick="window.open(this.href);return false;">
<?php

}
if ($params['tag']==3)
$this->Label2->Caption = "Acaba de pinchar el Link de Parámetros";
if ($params['tag']==4)
exit();
}


La franja horaria es GMT +2. Ahora son las 06:15:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi