This is the P2PU Archive. If you want the current site, go to www.p2pu.org!

Programando web con PHP

My recent threads

You haven't posted any discussions yet.

Recently updated threads

Semana 1

Go back to: General discussion

En esta semana vamos a familiarizarnos con la idea de que PHP es un lenguaje que corre en un servidor, y que como resultado de esos programas se producen paginas web en HTML que son enviadas al usuario

para correr un programa hecho en PHP hace falta un servidor, donde se aloja el programa (archivo) en PHP y tambien hace falta un navegador que ejecute ese programa.
Para ejecutar un programa PHP solo hay que "navegarlo"

es decir que si yo tengo un servidor donde esta alojado miprograma.php, al navegar esa pagina desde un navegador como Mozilla Firefox u otro, voy a hacer que ese programa se ejecute y que produzca una salida, habitualmente en HTML que va a ser lo que va a recibir el navegador digamos, que al navegar http://unservidor.com/miprograma.php obtengo el RESULTADO de miprograma. Los programas PHP se ejecutan en el servidor y SU RESULTADO es enviado al navegador que lo solicito, es decir que el programa PHP esta en el servidor, se ejecuta en el servidor Y MUERE en el servidor. Los usuarios que navegan no ven el codigo PHP que dio origen a sus consultas.

En el area de ejemplos http://nodosol.org/p2pu/ejemplos encontraran para descargar un zip que contiene 4 ejemplos, veanlos y naveguenlos
verlos significa que vean el codigo PHP y navegarlos les mostrara el resultado de correr ese programa PHP

1) info.php muestra la funcion phpInfo()

2) readfile.php muestra la funcion readfile()

3) readfile2.php muestra mas sobre readfile, que es mas poderosa...

4) file_contents.php es un hacking para solucionar lo de readfile2.php con varias funciones

para ver detalles sobre estas y otrras funciones, el lugar de consulta OBLIGADO es el manual online de PHP en
http://php.net/manual

por ejemplo encontraran informacion sobre la funcion readfile en http://php.net/manual/es/function.readfile.php

La propuesta de esta semana es que:

1. hagan andar la infraestructura, rueben estos ejemplos

2. se animen a tocarlos y cambiarlos un poco, y comenten sobre eso

3. vean algunas funciones (al azar) en el manual y comenten o pregunten

todavia no vamos a ver detalles organizados de sintaxis, la idea es tocar y jugar sin saber mucho, y ver como resulta

si hacen pruebas y las quieren compartir entren con su usuario a http://nodosol.org/p2pu y suban ahi sus pruebas :)

los ejemplos ademas de bajarse pueden verse online (SOLO EL RESULTADO, para ver el codigo PHP hay que descargarlos) en

http://nodosol.org/p2pu/ejemplos/1/info.php
http://nodosol.org/p2pu/ejemplos/1/readfile.php
http://nodosol.org/p2pu/ejemplos/1readfile2.php
http://nodosol.org/p2pu/ejemplos/1/file_contents.php

dudas preguntas y sugerencias sobre las tareas de la semana, en este hilo

si son de infraestructuras y herramientas o de sintaxis PHP en el hilo correspondiente por favor, somos muchos y si nos desordenamos va a ser malo para todos
nos vemos!

2 people liked this
Celso Velarde's picture
Celso Velarde
Wed, 2011-01-26 05:14

Hay un pequeño error aqui:
http://nodosol.org/p2pu/ejemplos/1readfile2.php
deberia ser:
http://nodosol.org/p2pu/ejemplos/1/readfile2.php
Solamente lo menciono!!!

Martín Alejandro Mednik's picture
Martín Alejandro ...
Wed, 2011-01-26 15:08

¿Hay que devolverte algo tras estas pruebas, Martín?
¿O sólo plantear dudas si surgen?
Gracias! Saludos

Martin Olivera's picture
Martin Olivera
Wed, 2011-01-26 15:27

no hay una tarea obligatoria esta semana, es una semana de afianzamiento, la que viene va a ser mas dificil, jeje

pero los que quieran profundizar mas, revisen las siguientes funciones, del manual, e intenten usarlas (habitualmente van a encontrar buenos comentarios en el propio manual, con ejempos de codigo, pruebenlos)

echo()
print()
file_get_contents()
file_put_contents()
date()
include()
require()

Martin Olivera's picture
Martin Olivera
Wed, 2011-01-26 15:32

paso aca las preguntas de drack_669 added a comment to Lenguaje PHP

profe... yo vi que en el archivo de ejemplo que nos paso de nombre
"readfile.php" carga 2 archivos o mas bien llama a leerse 3... pero solo se
muestran 2...
se muestra el archivo .txt y el otro .html...
El tercer archivo que manda a llamar es el mismo archivo en si...
readfile.php

otra pregunta... cuantos tipos de archivo puede leer el readfile? aparte del
.txt y .html

y la ultima pregunta... vera que ahi metiendole mano para probar le cambie al
archivo readfile.php la parte del codigo:
readfile("readfile.php");
pense que se habia equivocado profe o algo por el estilo y le puse:
readfile("readfile2.php");
y me lee el archivo... pero los comentarios los muestra, lo lee digamos
mal... no como un archivo php exactamente... a que se debe?

Martin Olivera's picture
Martin Olivera
Wed, 2011-01-26 15:34

ceres responde:
Wed, 2011-01-26 00:59

Hola. Creo que la primera es porque la función lee el archivo pero no lo procesa del lado del servidor, sino que lo envía al navegador. En la segunda me atrevo a pensar que el navegador interpreta todo lo que esté entre <? ... > como comentario, o por lo menos como contenido que no es para mostrar, y cuando llega al cierre de la etiqueta de cambio de línea, interpreta que el comentario terminó. Saludos

Martin Olivera's picture
Martin Olivera
Wed, 2011-01-26 15:38

1) readfile lee el archivo tal como esta y lo pega sobre la pagina de salida que esta creando. lo mismo hace con el .txt, con el .html y con el .php. Prueba de nuevo, y cuando estes viendo http://nodosol.org/p2pu/ejemplos/1/readfile.php mira el codigo fuente (en el Navegador->Ver->Codigo fuente) y veras que dentro del codigo sí esta incluido el aerchivo de .php solo que el navegador no lo muestra. Como intuye ceres esto es una decision del navegador, pero no lo toma como comentario, sino como una etiqueta HTML desconocida. prueben si ponen en un .html cualquier cosa entre < y > no lo veran aparecer

2) admite cualquier archivo y lo pega, sin intyerpretar. Prueben con una imagen o con un video o con lo que quieran, y vean los resultados

Luis Palomo's picture
Luis Palomo
Thu, 2011-01-27 03:06

el que el navegador omita el código entre

<?php
y
?>
resulta ser un claro ejemplo de que PHP se procesa en el servidor :)

Miguel David's picture
Miguel David
Wed, 2011-01-26 19:29

1. Formas de embeber codigo PHP.

<?php
   codigoPHP    
?>

<? codigoPHP ?>
<?php
      codigoPHP   
?>

hay una cuarta forma pero la pude incluir en el foro :)

2. Hola martin.
Hay forma de mudar el foro a un sitio donde los comentarios se puedan separar del codigo ?
Es que veo este un poco limitado en ese aspecto.
Saludos

1 person liked this
Martin Olivera's picture
Martin Olivera
Wed, 2011-01-26 19:56

es posible lo que dices, Miguel, pero la unica forma que recomiendo es la primera <?php ?> porque las otras son opcionales (es decir son configurables en cada servidor si las interpreta o no, y a veces no podemos controlar la configuracion de un servidor)

La segunda que mencionas <? y ?> es bastante usada tambien, pero tiene el problema de que los documentos XML tambien empiezan con <? y entonces hay sewrvidores que manejan ambos lenguajes - PHP y XML - y ese separador se torna confuso, entonces lo deshabilitan. Si esta deshabilitada esa configuracion (short_open_tag) vas a tener que cambiar todos los<? por <?php que si bien puede hacerse facilmente con algun editor que haga remplazos masivos, no deja de ser un inconveniente

La tercera opcion <% %> viene por similitud con ASP y francamente, si bien podria ser usada en algunos servidores, francamente esta muy poco usada y no la recomiendo en absoluto porque confunde mas de lo que ayuda

No se a cual te refieres con la cuarta forma

Es cierto que es muy incomodo no poder poner ejemplos de codigo y que se lean bien, pienso que deberiamos armar una lista de correo fuera del Forum o algo asi, voy a consultar a P2PU.org sobre este tema...

Miguel David's picture
Miguel David
Wed, 2011-01-26 20:11

Super la aclaracion, no sabia que las otras formas eran opcionales y menos el porque.
Ahora si me queda mucho mas claro y solo utilizare la primera.

Luis Palomo's picture
Luis Palomo
Wed, 2011-01-26 21:20

puedes usar la etiqueta <code>

1 person liked this
J. Alonso Perez T.'s picture
J. Alonso Perez T.
Wed, 2011-01-26 19:58

En el ejemplo de "file_contents.php"

...
// por ejemplo donde dice
//
//
//
// lo cambia por
//
...

La finalidad de "str_replace ('cadena1', 'cadena2')" es solo la de cambiar una cadena de caracteres por otra?

Y file_get_contents("archivo") siempre va dentro de str_replace??? o se puede utilizar como para tomar datos digamos desde una tabla (archivo, pagina web, etc...)de una base de datos en MySQL??...

Martin Olivera's picture
Martin Olivera
Thu, 2011-01-27 00:36

str_replace remplaza una cadena de caracteres por otra, todas las veces que aparezca (es un poco mas compleja en realidad, puedo poner un conjunto de cadenas a remplazar y una cadena de remplazos respectivos, y realizar todos los cambios con una unica llamada a la funcion, pero para entender eso bien deberemos ver arrays en la 4ta semana, paciencia...) SI QUIEREN SABER MAS BUSQUEN LA FUNCION EN EL MANUAL

file_get_contents() lee un archivo, pero no lo muestra, no es necesario qu vaya dentro de str_replace. Cualquier funcion de PHP puede usarse sola o combinada con otras, las que sean. PHP es un lenguaje MUY LIBRE, pueden escribir lo que quieran y en general anda (no siempre como ustedes pensaban, es cierto, jeje, pero anda)

file_get_contents() solo lee archivos, como si fueran de texto, los lee textuales quiero decir. Para tomar datos de una tabla que esta en un archivo sirve si es una rchivo de texto, pagina web, etc. Pero para una base de datos MYSQL ay que usar otras funciones, especificas (si quieren curiosear busquen en el manual la parte de MySQL http://ar.php.net/manual/es/book.mysql.php

J. Alonso Perez T.'s picture
J. Alonso Perez T.
Wed, 2011-01-26 20:09

En el ejemplo de readfile2.php

Lo que hace es "leer" el contenido del archivo pero no la pagina en si?? o algo asi??

la funcion readfile me parece muy interesante haber si profundizamos mas en ese tema.. Gracias!

J. Alonso Perez T.'s picture
J. Alonso Perez T.
Wed, 2011-01-26 20:18

<?php
    readfile
("Tarea 1- Porque quiero aprender PHP.php");
?>

readfile() no funciona con imagenes??

Matías Castillo's picture
Matías Castillo
Wed, 2011-01-26 23:04

readfile() si funciona con imágenes. pero no en el modo en que me imagino que tu quieres que funcione.
puedes leer la referencia de readfile() aquí: http://php.net/manual/en/function.readfile.php

readfile() lee un archivo y lo escribe en el búfer de salida. por lo tanto no veras el dibujo de la imagen, si no que veras la representación en texto de los bits que conforman la imagen.

saludos.

1 person liked this
J. Alonso Perez T.'s picture
J. Alonso Perez T.
Thu, 2011-01-27 20:05

Muchas Gracias por la explicacion ;-)

Steven Rojas's picture
Steven Rojas
Thu, 2011-01-27 23:40

Sobre el hacking utilizado en file_contents.php:
Excelente explicacion. Me fue muy facil entenderla :D

Steven Rojas's picture
Steven Rojas
Fri, 2011-01-28 03:42

Hola companieros... Estaba leyendo por ahi y me surgio una pregunta,, luego busque su respuesta y me parece interesante compartirla:

Diferencia entre print y echo??

PRINT puede comportarse como una función, puesto que devuelve el valor 1, por lo que es posible que una instrucción PRINT se encuentre participando en expresiones complejas, donde ECHO generaría un error.
ECHO acepta múltiples argumentos.
PRINT es infinitesimamente más lenta por devolver el valor “TRUE”.

Ejemplo de uso:
$array=file("archivo.txt") or print "No encontrado";
En el ejemplo anterior solo se puede usar PRINT, si usaríamos ECHO daría un “parse error” dado que ECHO no devuelve valor alguno.
echo "hola ","adios ","a todos";
ECHO acepta múltiples argumentos, mientras que print no.

1 person liked this
David Andres Contreras's picture
David Andres Cont...
Sun, 2011-01-30 03:03

HOla steven!!! excelente tu aclaracion, esa pregunta se me paso por un nanosegundo por mi cabeza pero segui leyendo y luego se me paso investigar la diferencia.

Saludos!!!!

Núria's picture
Núria
Mon, 2011-01-31 12:58

Gracias por tu aclaración!

Saludos

katheryn krystal's picture
katheryn krystal
Mon, 2011-01-31 07:29

hola:
intente modificar el archivo file_contents.php colocandolo de la siguiente manera.

<?php
   
echo("Mi pagina preferida es: <br/>");

    echo(
str_replace('="/', '="http://katherynsite.com/', file_get_contents("http://katherynsite.com") ) );
?>

y me salio el siguiente error:

You have attempted to access this site with an invalid User Agent.

If you think this is a mistake you can contact the site webmaster at kathy(at)katherynsite(dot)com.

Be SURE to include the following information in any email!
User Agent: none
Remote Address: 201.170.23.65
Client IP: none
Forwarded For: 201.170.23.65

PLEASE: bear in mind that even if you have done nothing wrong, you may be getting page due to someone's misuse of the site in your ip range..

me podrian orienar sobre esto???

Celso Ulises Juarez Ramirez's picture
Celso Ulises Juar...
Mon, 2011-01-31 17:04

Parece que la pagina Katherynsite.com está 'protegida' contra accesos que no contengan un user agent. Cuando una aplicación se conecta a un servidor para obtener una pagina, en la cabecera de la petición http, incluye su user agent, que contiene información sobre el sistema operativo, el motor y la versión del navegador, para que el servidor sepa de que forma el cliente va a ver su pagina. Esto es útil por ejemplo para evaluar si se está accediendo desde una aplicación que no es navegador web, desde una dispositivo móvil, etc. Mi user agent sería algo así:

"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.83 Safari/534.13"

En conclusión, ese sitio al que quisiste acceder está evaluando antes de mostrar contenido que el cliente esté utilizando un user agent válido, y como la petición que manda file_get_contents no incluye user agent, te devuelve ese error.

Espero haber ayudado, si alguien tiene otra información, o corrección, adelante. Saludos.

1 person liked this
Núria's picture
Núria
Mon, 2011-01-31 12:58

Hola a todos!

Ahora que tengo un rato libre me he puesto a modificar los ejemplos que nos propuso Martín. El caso es que he intentado usar la función readfile con un vídeo embed de vimeo y este aparece por "encima" del texto/funciones que pongo a continuación del readfile. Si intento lo mismo pero con un mp4/mov que ya tengo subido al servidor, directamente no me lo reconoce. Estoy haciéndolo bien o para este tipo de contenido es mejor es mejor usar otro tipo de función? Gracias.

Martin Olivera's picture
Martin Olivera
Mon, 2011-01-31 17:34

readfile() funciona leyendo archivos de texto, es decir que funciona "bien" traspasando archivos TXT HTML CSS JS XML y cualquier cosa que se escriba en texto. Las imagenes, videos, audios, etc. son archivos codificados de manera binaria y no van a funcionar con el readfile() (en realidad van a ser copiados y pegados de manera binaria sobre la pagina, pero no es asi como se procesan ese tipo de archivos en la web)

Núria's picture
Núria
Mon, 2011-01-31 18:29

Gracias Martín, después de escribir el mensaje he intentado investigar, he trasteado más con el readfile() y al final me he imaginado que sería por esto que has comentado :)

Enrique Trepat's picture
Enrique Trepat
Mon, 2011-01-31 18:21

Buenos dias!
Estoy utilizando 000webhost.com como hosting, trae PHP Version 5.2.11 instalado.
En el archivo de ejemplo readfile.php me muestra caracteres raros. Volví a subir "archivo.txt" convertido a ansi con el notepad++ y me lo muestra correctamente.
Lo raro es que en phpinfo veo que está configurado para aceptar tanto ISO-8859-1 como utf-8.
Apache Environment
HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.3
HTTP Headers Information
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.3
PHP Variables
_SERVER["HTTP_ACCEPT_CHARSET"] ISO-8859-1,utf-8;q=0.7,*;q=0.3

saludos