You are on page 1of 16

[REPRODUCCIN DE MSICA]

DAVID J. MALAN: De acuerdo. Esto es CS50. Este es el comienzo de la semana ocho.


Y se recordar que lo dejamos la ltima vez que mira un nuevo idioma por completo.
De hecho, uno que es bastante ligero y ni siquiera es un lenguaje de programacin.
Es un lenguaje de marcado que nos permite realmente estructurar y hacer que las
pginas web. Y cuando algo ms en conjuncin con esto-- o pronto lo sabr, si no lo ha
hecho. Vamos a utilizar en cascada Hojas de estilo o CSS, que es otro tipo de le
nguaje con propiedades y valores eso va a dejarnos hacer cosas como cambiar el c
olor y cambiar la posicin y este tipo de ajustes. Pero hoy en da y en adelante, em
pezamos a centrarse en las lenguas ms poderosas, lenguajes de programacin como PHP
reales.
As que PHP ha estado alrededor por algn tiempo. Y como se ver, se fue diseado princi
palmente desde el principio para real utilizar en el desarrollo web y en realida
d la generacin de pginas web. Entonces, qu tipo de caractersticas hace un idioma nece
sario con el fin de hacer web pginas de forma dinmica con l?
En otras palabras, si desea generar contenido dynamically-- como Facebook de Sum
inistro de noticias, que cambia constantemente, o mensajes instantneos que aparec
en de vez a tiempo-- como lo que es el pieza clave de la funcionalidad lo que ne
cesitas en un lenguaje de programacin que le permiten de forma dinmica imprimir nu
eva informacin a la pantalla?
ESTUDIANTE: Cdigo. DAVID J. MALAN: Cdigo. Okay. Tomaremos eso. Un poco ms preciso.
Quiero decir, podramos hacer esto con C, francamente. Sera un dolor en el cuello.
Pero- es este compromiso?
ESTUDIANTE: S. Las variables, tal vez? DAVID J. MALAN: Variables. Bueno, seguro.
Las variables sin duda nos pueden ayudar. E incluso algo ms simple. Lo usamos en
la primera programa del primer da cuando en realidad nos dijo "hola mundo".
ESTUDIANTE: Imprimir.
DAVID J. MALAN: Imprimir, verdad? Imprimir o printf en el mundo de C. As que todo
este tiempo, que hemos tenido en nuestra disposicin un language-- C, en particula
r: e incluso Rasguo para el caso de que puede generar cadenas de texto.
Bueno, si el HTML, como vimos la semana pasada, es slo un montn de cadenas de text
o aunque con soportes abiertos y cerrados soportes y algn tipo de rima y la razn d
etrs de ella, as entonces podramos realmente comenzar a generar pginas web manualmen
te escribiendo a cabo en gedit o en Microsoft Word, para que matter-- slo necesit
amos un editor de texto.
O podramos escribir cdigo, a su sugerencia antes, eso nos deja generar dinmicamente
HTML, y eso es lo que vamos para empezar a hacer con PHP y, finalmente, incluso
con una lenguaje llamado JavaScript es utilizar un idioma a generar otro. Y, de
hecho, esto es lo que Facebook y muchos, muchos otros sitios hacer para realmen
te dinmicamente mostrar nueva informacin a usted.
As que vamos a
e muy poderoso.
lado. Y slo un
te, se necesita

empezar con un esto-- lnea de mira crptico, pero uno eso es realment
Hasta ahora, hemos estado utilizando C, que es un lenguaje compi
recap-- rpida un compilado lenguaje tiene qu caractersticas? Obviamen
para compilar , pero qu significa eso? S?

ESTUDIANTE: Tiene que ser ensamblado en cdigo mquina.


DAVID J. MALAN: OK. Necesita ser ensamblado en cdigo mquina. As que usted toma su cd
igo fuente, que es una especie de Ingls-como. Convierte eso a nivel ms bajo algo,
que se llama en ltima instancia objeto code-- de 0 y 1 de. Y son esos de 0 y 1 de

ese una CPU, como los realizados por Intel, realmente entender.
Ahora, PHP y Python y Ruby y JavaScript y racimos de otro lenguas no se compilan
idiomas, pero interpretado lenguas, lo que significa que acaba de escribir y lu
ego no convertirlos en 0 y 1 de la. En su lugar, slo proporciona a continuacin com
o entrada al programa de otra persona, llamado un intrprete. Y de esa persona pro
grama ha sido diseado para entender lo que cada uno y cada smbolo en Python o PHP
o Ruby o cualquier nmero de otros idiomas significa.
Y por lo que todo lo que necesitamos es algo como esto. As que, de hecho, voy a i
r hacia el aparato aqu, slo a cualquier ventana de edad, y estamos va a seguir ade
lante y abierto un archivo llamado, por ejemplo, hola. Ahora anteriormente, podra
haber salvado esto incluso con una extensin de archivo, pero yo voy a hacer algo
an ms simple aqu. Voy a seguir adelante y comenzar este archivo con esta sintaxis
crptica. As que "el usuario, bin, env, para el medio ambiente, php. "
Esto es simplemente una lnea de cdigo que es voy a decir mi sistema operativo, ir
a buscar en su local, medio ambiente sea lo que sea, donde PHP es-- la interpret
er-- y seguir adelante y utilizar ese intrprete para interpretar el cdigo siguient
e. Ahora, esto es una especie de una caracterstica fea de PHP. Pero en este idiom
a, cualquier Cuando se escribe cdigo PHP, es necesario tener uno de estos feos Et
iquetas PHP que delimitan el inicio de su code-- <? php.
Pero por debajo de aqu, ahora puedo hacer algo muy simple, al igual que printf ho
la comas mundo barra invertida n cerca cita, parntesis de cierre. Y a continuacin,
slo por si acaso medida, voy seguir adelante y cerca mi etiqueta php aqu por lo q
ue se ve todo muy bien bastante impresa.
Y tan pronto como haga clic en Guardar, gedit es suficiente realmente inteligent
e mirar a esa primera lnea y das cuenta, oh, ests escribiendo cdigo PHP. Djame resal
tado de sintaxis con los colores aqu para que se destaca un poco ms. Pero ahora me
voy a ir hasta mi ventana de terminal. Voy a acercar.
Este programa se llama "hola" as que voy a hacer barra de puntos hola, pero neg el
permiso. Y bash. En realidad nos enteramos de que Hace cosa de un par de semana
s en el contexto de Shellshock, uno de esos bichos.
Pero Permiso denegado hemos visto antes, tal vez en un contexto diferente. Alguie
n recuerda cmo usted puede arreglar algo donde el permiso es negado de esta maner
a? Cul es el comando, por lo menos?
ESTUDIANTE: Chmod. DAVID J. MALAN: S, chmod, para cambiar el modo de un archivo.
Y obtendr an ms acostumbrado a esta semana que viene con un problema posterior esta
blecer. Pero por ahora, me voy a cambiar el modo de no ser legible, sino para da
r a cada uno executeability privilegios, la capacidad para ejecutar este archivo
. Y yo voy a asignar que en el fichero de hola.
Si ahora hago slash dot hola entrar, usted ver, de hecho, mi programa, hola mund
o. Y qu paso me hicieron saltar claramente en total? Compilacin. As que me encontr co
n este programa, sencillamente.
Y resulta que usted puede hacer esto con una gran cantidad de sintaxis que recue
rda a C. Djame ir en el cdigo de hoy, que he puesto en mi directorio vhost aqu, por
razones reales vamos a volver a. Y yo voy a entrar, digamos, las condiciones 1.
Y vers aqu, en primer lugar y ante todo, un montn de comentarios. Pero esto es en r
ealidad una recreacin en PHP de un programa que hicimos en la semana uno llamado
condiciones 1.c donde el propsito en la vida de este programa es al parecer para
pedir el usuario de un entero y luego hacer un poco esponjoso anlisis en l mediant

e el cual usted dice si es positivo o negativo o igual a cero. Y Traigo esto a c


olacin slo porque, excepto tal vez un pequeo detalle, es indistinguible tan lejos d
e C.
Cul es la una de las caractersticas aqu que tal vez salta a usted como un poco difer
ente? Tal vez dos cosas. S?
ESTUDIANTE: Muestra de dlar n?
DAVID J. MALAN: S. As signo de dlar n est presente. Y, como signos de dlar vamos a ve
r, se van ser una solucin al principio de cualquier variable en PHP. Es a la vez
buena y buena bad-- en que es una especie de lo que es obvio una variable, el ma
l en que se trata de otra cosa para escribir. Y hay otra cosa que no tenemos bas
tante visto, al menos por esta ortografa. s?
ESTUDIANTE: Readline.
DAVID J. MALAN: Readline. Readline no vimos, de por s, en C, a pesar de que exist
e algo similar, pero hemos utilizado getString, y esto es su contraparte. As que
si me voy en este directorio, que pasa a ser, como voy a explicar un poco en mi
host virtual directorio y mi fuente de un directorio, y yo seguir adelante y hac
er slash dot conditions-- slash dot whoops-- las condiciones 1, vers, una vez ms,
el mismo permiso Issue-- neg.
As que permtanme el zoom y hago chmod un plus x en las condiciones, las condicione
s de la raya vertical de puntos. Me gustara un nmero entero, por favor, 50. Y podra
mos jugar este juego durante todo el da. Se va a comportarse exactamente como lo
hizo en la semana uno.
Aceptar lo que no tan diferente, excepto no slo que poco ligera de sintaxis, pero
en la parte superior, que de nuevo tenido esta lnea que me permiti crear algo que
parece un programa C llamado hola, llamadas condiciones 1. Pero no es de los 0
y Estoy ejecutando directamente. Est en lugar de ejecutar este intrprete cuyo nomb
re pasa a ser idntica a la lengua. El programa se llama PHP, y mi cdigo por debajo
de la lnea uno se pasa en ella.
Podemos hacer otra bastante simple ejemplo una reminiscencia de algo lo hicimos
hace semanas. De nuevo, esto es una especie de porcin arbitraria de cdigo que apar
entemente hace lo que cuando lo ejecuta? Qu es esto va a imprimir, es de suponer?
As inicialmente en la lnea 16, que es va a decir x es ahora 2, probablemente. % D
es el mismo que $ i para printf. As que a continuacin se cubicar, punto, dot, dot,
en la lnea 17. Y entonces aparece la lnea 18 para llamar a una funcin Cubed. Y dnde
se define Cubed?
Bueno, parece que en la lnea 25, as que no es tan diferente. Tengo algunos comenta
rios anteriores , pero en su mayor parte, que es un bastante sencillo portar o c
onversin desde el programa de C para la versin PHP. Pero ahora hay un par de difer
encias que tal vez debera saltar fuera. Qu otra cosa es diferente sobre cmo se podra
escribir este mismo programa en C?
ESTUDIANTE: [inaudible].
DAVID J. MALAN: No ningn prototipo hasta la parte superior. As PHP-- y, francament
e, un montn de Las Lenguas moderna son mucho ms inteligente y ms til que los compila
dores de C en que puede poner la funcin hasta aqu, usted puede poner una funcin aqu
abajo, y el intrprete se va hacer el favor de la lectura todo el archivo antes de
que decida que no existe alguna funcin. Tan agradable mejoras aos posteriores. Pe
ro tambin hay algo otra cosa diferente o ausente aqu. S?

ESTUDIANTE: [inaudible]. DAVID J. MALAN: Nosotros no tenemos que declarar los ti


pos de variables, as que ya veremos en poco tiempo que hay diferentes tipos en PH
P, pero no es necesario especificarlos, que tambin es a la vez bueno y malo. Y ha
y otra cosa que falta.
ESTUDIANTE: No hay bibliotecas.
DAVID J. MALAN: No hay bibliotecas. OK, as que eso es bueno. Tenemos un montn ms sa
carlo de la caja. As que no hay en realidad mucho ms las cosas que pens eran difere
ntes. Qu tal manera en la espalda? Qu es eso? Dicen que una vez ms?
ESTUDIANTE: Puntero.
DAVID J. MALAN: No hay punteros. Aceptar, por lo menos en este ejemplo, no. Eso
es justo. As que no son punteros en PHP realmente en general. Hay algo que se lla
ma referencias, pero no vamos a pasar mucho tiempo all. Y qu ms?
ESTUDIANTE: Principal. DAVID J. MALAN: Principal. As que esta era la gran cosa Yo
estaba pensando. Ntese que no hay punto de entrada principal. Slo tiene que empez
ar a escribir su cdigo. Y esto es en realidad va a ser ventajoso cuando hacemos l
a transicin momentneamente para utilizar realmente este mismo lenguaje para la web
basado- programacin, para lo cual no quieren tener un solo punto de entrada. Pod
ramos querer tener un montn de URL, un montn de diferentes archivos todo teniendo e
n la entrada de usuario y la produccin de salida.
Pero aqu est el muy desalentador ejemplo que le promet la ltima vez, es decir, en es
ta carpeta aqu, las faltas de ortografa. As que en este archivo corrector ortogrfico
, que nos no pasar demasiado tiempo en adelante, no es esencialmente un porting- P-O-R-T. Es slo la palabra dada cuando, por ejemplo, a convertir de un idioma a
otro manualmente por lo general.
Esta es una de portabilidad de PC versin del corrector ortogrfico de PSET 5. Y ese
ncialmente trat de convertir lnea por lnea lo ms cerca que pueda. As que si te gusta
este tipo de cosas, lo que realmente vale la pena en algn momento tirando de los
dos uno al lado del lado y ver lo que es lo mismo y lo que es diferente. Pero so
n bastante maldito similar. Si te acuerdas de lo que corrector ortogrfico incluso
pareca, a pesar de que usted no lo hizo tendr que cambiar este archivo, que es ba
stante parecido estructuralmente con slo un par de los cambios aqu y all.
As que esto es slo para decir que es bastante sencillo para convertir speller de C
a PHP. Pero en el diccionario, no hay algo an ms convincente. Djenme seguir adelan
te y crear mi propio archivo dictionary.php. As ligeramente diferente en que lo l
lamaremos .php en vez de .c. Debido a que este es un archivo PHP, yo hacer-- lig
eramente annoyingly-- tiene para iniciar el archivo con una etiqueta php as. Y yo
voy a seguir adelante y definir algunas funciones. Funcin llamada de verificacin,
que es va a tomar en una palabra como antes. Pero este argumento va a tener un
dlar firmar porque estamos, de nuevo, usando PHP. Otra funcin de dictionary.c era
carga y se tom en el nombre de un diccionario, as que voy a conseguir que la funcin
lista para ir.
Otro en dictionary.c fue qu? Tamao fue uno de los ms bonitos, en menos si se mantena
en torno a alguna variable. tan slo el tamao tiene que devolver una variable. Y l
uego estaba descarga.
As que hubo estos cuatro funciones en problemas 5 que usted necesita para poner e
n prctica con una estructura de datos o estructuras. As que me promet que en PHP, p
odemos declarar una tabla hash, por ejemplo, todo lo que ms fcilmente. De hecho, s
i quiero una tabla hash, Yo slo voy a ir de esa manera y ah est mi tabla hash. Y es
a es la nota, desalentador, que lo dejamos en el ltimo tiempo. Y sabes qu, si quera
una variable de tamao, as, ste no es todo tan diferente de C, pero yo voy a seguir

adelante y hacer eso. Y note ningn tipo de datos. Y voy a volver ms tarde y en rea
lidad aadir algunos comentarios aqu. Pero qu pasa con la carga?
Si diccionario signo de dlar es el nombre de mi archivo y yo en realidad quiero c
argar palabras en esta mesa ahora, De hecho, me puedo hacer algo bastante simple
. Uno-- y esto es minorly annoying-- en PHP, se tiene que especificar en el inte
rior de una funcin si quieren acceder a algunos mundial variable que est definida
fuera.
Pero eso no es todo interesante en este momento. Lo que es ms interesante es esto
para cada construyo que mencion la ltima vez. Y resulta que PHP tiene una funcin l
lamado archivo cuyo propsito en la vida es abrir un archivo y leer en todas sus ln
eas en una matriz y la mano hacia atrs para.
Lo que quiere decir que puedo hacer tan diccionario que ahora efectivamente cuan
do llamo archivo, esto me va a devolver una serie de palabras del archivo. No to
do es tan bueno. Todava va a ser una lnea de palabras, algo lineal. Pero puedo seg
uir adelante y repetir sobre cada una de estas palabras utilizando que la sintax
is vimos brevemente la ltima vez. Y lo vers ms en la prxima PSET.
Pero ahora tengo una iteracin de bucle sobre cada palabra en el diccionario. Y en
cada iteracin, recuerdo que soy llamando a la palabra actual "palabra." Y todo l
o que se va a llevar a poner una palabra en el diccionario es va a ser adivinar
la palabra "verdad". Esa es mi funcin de insercin. Esa es mi funcin de carga para m
i diccionario. Ahora es un poco de una trampa, ya que, sabes qu, no hay en realid
ad n de barra invertida al final de las palabras que probablemente debera deshace
rme de, pero eso no es un problema, ya que PHP tiene una chuleta que funcin llama
da literalmente chuletas fuera un personaje en el final. As que no hay problema.
Hemos ido por delante y, de hecho abreviada que slo esto. Y ahora probablemente d
ebera llevar un registro de tamao, por lo que vamos a hacer por lo menos esto-- ta
mao ++. Yo puedo hacer eso como antes. Y entonces esto va probablemente a funcion
ar bien, por lo que regresemos cierto. Hecho. PSET 5.
[Risas]
DAVID J. MALAN: OK. Vamos a hacerlo de nuevo con el siguiente PSET, tambin. As que
qu pasa con el tamao? Bueno, ste es de esperar se trata como era de esperar la ltima
vez, aunque tengo que hacer esta cosa estpida mundial. Es slo un artefacto de el
diseo de la lengua.
Pero cheque es un poco ms interesante. As que si pasaba en dlares signo denominativ
o, en primer lugar quieren tener acceso a esa mesa variable global. Y ahora si q
uiero comprobar si una palabra est ah, Simplemente puedo decir si es cierto que la
siguiente se encuentra en la tabla, a continuacin, seguir adelante y de retorno
verdadero; si no, regrese falso. Hecho. La otra mitad de PSET 5.
Muy bien, as que de nuevo, estoy cortar algunas esquinas. Para ser justos, probab
lemente debera pasar unos segundos ms en esta aplicacin. Y yo probablemente no debe
ra burlarse de todo el horas te ponen en el PSET tanto. As strtolower es una funcin
. Algo parecido existencialista en C, al menos por caracteres, pero PHP mundo ti
ene una versin cadena entera.
Eso va a obligar a todo en minsculas, que algunos de ustedes podra haber hecho a l
o canonicalize que estaba poniendo en su diccionario. Y ahora usted puede hacer
esto en C, tambin. Esto no tiene nada que ver con PHP.
Pero cada vez que tiene una condicin booleana, como algo en lnea 10 all, que es slo
va a evaluar a verdadero o falso, y si tu lo dems claramente regresa verdadero o
falso, lo que pude simplemente realmente hacer esto ms sexy y acaba de hacer algo
como esto. As que no es mi funcin de comprobacin. Derecho, si el booleano devuelve

un verdadero o un falso, vamos a regresar inmediatamente.


Y hay algunos otros ajustes Yo podra hacer aqu y all. Descarga Load--, por cierto,
de que est hecho. No hay nada que hacer all. Dado que toda la memoria en PHP y muc
hos otros idiomas se gestiona en realidad para usted. As que mientras que en C, c
omo que ha aprendido dolorosamente, cualquier cosa que malloc o calloc o realloc
, tienes que liberarte. Cualquier cosa que usted fopen, tienes que fclose, de mo
do que los recursos se liberan en ltima instancia y herramientas como Valgrind no
lo hacen darse cuenta y no se quejan, lo cual es una buena cosa para correr en
ellos.
Pero, sin duda, debe haber haber alguna captura, verdad? De lo contrario, que tip
o de desperdiciamos un montn de semanas. As que hay una serie de razones razn por l
a que tomamos este tipo de trayectoria, pero hay un trade-off. Cierto, esto ha s
ido temtica.
Entonces, qu podra un trade-off aqu en movimiento, de C a PHP? Se siente como todo a
ganar hasta el momento que no sea un poco de la fealdad aqu o all. S. Qu es eso?
ESTUDIANTE: [inaudible] de memoria. DAVID J. MALAN: velocidad. Okay. Bueno, mi v
elocidad era bastante rpido. Derecha? Pero la velocidad de ejecucin del programa?
OK, as que eso es un punto justo.
As que ya que iba a pasar, yo de antemano con claves de hasta tanto mi solucin int
ento, el uno Yo tena en el gran tablero era una solucin a base de intento, y yo te
ngo que en este directorio aqu. As que en un momento, puedo seguir adelante y ejec
utar esto en la Biblia King James, golpear Intro. Y esto es de esperar correcta
aplicacin al final, me da tiempo en total de 0,38 segundos para que un ejemplo un
tanto arbitraria.
Y si ahora entro en esta segunda ventana de terminal aqu donde por primera vez ab
r gedit, y mucho me voy a code-- de hoy que, de nuevo, es en este directorio aqu-y djame ir adelante y corro ortografa. As que para ser claros, esta es la versin de
PHP. Slo estoy mostrando la parte superior de aqu.
As que si lo hago corrector ortogrfico de tilde CS50 PSET 5 textos, King James, en
tran. Es an ms rpido que la escritura en C, pero el tiempo total es, aviso, 0,93, m
ientras que mi Aplicacin basada en C fue 0,38. As que es una diferencia no trivial
.

Y esto es slo en un solo archivo. Si se va a ejecutar los dos programas contra el


gran tablero y tienen un montn de entradas probado, este sera sin duda sumar. Y s
i tuviramos conjuntos de datos an ms grandes, esto, tambin, podra sumar an ms. As q
el pago de algn precio de velocidad es de hecho el caso. Qu otra cosa? S?
ESTUDIANTE: Cantidad de uso de memoria RAM.
DAVID J. MALAN: Cantidad de uso de memoria RAM. As que no le di un segundo pensad
o al escribir este PHP versin en cuanto a cunto la memoria que estaba usando. Esto
y completamente aplazando que para PHP en s y el que escribi ese programa. Y eso p
odra estar bien, pero si yo realmente realmente preocuparse por apretar tanto el
rendimiento fuera de mi programa o fuera de mi sitio web o fuera de cualquier he
rramienta Estoy construyendo, tal vez PHP, de hecho, no es el lenguaje correcto.
Y, de hecho, es por eso que, para ejemplo, muchos servers-- web los programas re
ales que servir hasta content-- web no estn escritos en PHP o en Python o Ruby. E
stn escritos, al igual que usted ahora lo hace con juego de parmetros 6, en C para
que pueda exprimir cada bit de rendimiento fuera de l y realmente ejercer el con
trol de grano fino sobre lo que es pasando por debajo de la campana y no slo lo t

oman por hecho algunos ms alta estructura de datos de nivel.


Considere la posibilidad de, despus de todo, quien en PHP implementado esa nocin d
e un hash table-- en realidad es ms apropiadamente llamado array-- asociativo l o e
lla tiene alguna idea de qu tipo de los insumos que van a ser puesta en la estruc
tura? As que, obviamente, no es as, verdad? Es una herramienta genrica en el conjunt
o de herramientas que est proporcionada a cualquier persona que quiera para usarl
o, y por lo que seguramente se no puede ser optimizado en ltima instancia para ex
actamente lo que quieres hacer.
As que el tiempo de desarrollo del comercio podra offs-- difieren, el rendimiento
puede ser diferente, complejidad o el uso de memoria pueden diferir. Y as lo que
encontrar cada vez ms es que hay va a ser diferente herramientas para el comercio.
Y, de hecho, para una sper mayora de proyectos finales de las personas de esta cl
ase, lo creas o no, C no se va siendo la lengua derecho de usar.
Y de hecho, uno de los comida para llevar en ltima instancia, para cualquier clas
e como esta es conseguir que piensas, bien, qu debe lograr cuando la plataforma qu
e desee para resolver algn problema. Y, de hecho, vamos a cruzar este puente an ms
si nos fijamos en ms idiomas incluso ms all de hoy.
As que la transicin de dejar ahora a quizs un contexto ms familiar para el uso de un
lenguaje como PHP. Es algo comn a utilizar por lo la lnea de comandos, escribir g
uiones como yo lo hice, pero es mucho, mucho ms comn. Y que estaba destinado a ser
utilizado en la forma de archivos que normalmente termina en .php-- pero eso es
no un prerequisite-- que ellos mismos generan contenido web.
As que djame ir adelante y abrir unos pocos ejemplos I preparados de antemano. Y e
stos son en realidad una especie de verdad historias en que una de las primeras
cosas Lo que he hecho a m mismo despus de terminar CS50 y tal vez, creo, Hace aos C
S51 es mi compaero y yo estbamos ayudando para ejecutar el intramural de primer ao
programa de deportes, que, en el momento, haba estudiante de primer ao de registra
rse para varios deportes rellenando una hoja de papel, como se le llamaba, camin
ando a travs del patio a Wigglesworth, y soltndolo en algunos cada de la puerta del
procurador. Y entonces l o ella ira a travs de y luego en realidad envenos un corre
o electrnico de forma manual que nos registramos para un poco de deporte.
As que, claramente, una oportunidad para la mejora. En estos das, es posible recur
rir a solo Google Forms, pero de vuelta en el da, tuvimos que llegar a esta reali
dad, el fin de: No fue hasta llegar a ese largo ago-- para una programacin idioma
que no fue PHP. En ese momento, que era algo llamado Perl, que ha pasado de mod
a desde entonces. Pero la idea es la misma.
Y esencialmente sent a tratar al puerto va versiones de Perl a PHP, pero en pleno
descargo de responsabilidad, no dio cualquier pensamiento a la esttica por el mo
mento. As que aqu est una pgina web. Este es un archivo. Si Zoom hacia dentro, su pa
recer llamado froshim0.php slo porque es nuestro primer ejemplo de esta serie. Y
darse cuenta de que tiene lo que parece ser un formulario HTML muy feo, pero es
una forma interesante porque permite me proporciono la entrada del usuario en el
navegador.
Ahora la ltima vez cuando tuvimos un formulario, a quien nos sometemos nuestro pa
rmetro de consulta, el parmetro de cola como se llamaba? As que para Google, no? Est
amos totalmente despej en la idea de hacer nada con esa entrada.
Pero hoy, comenzamos la produccin de salida. Y el comportamiento voy a ver aqu ini
cialmente es bastante trivial. David, voy a comprobar fuera de gnero aqu, decir Ma
tthews aqu. No voy a ser capitn. Voy a haga clic en Registrar. Y darse cuenta de q
ue la direccin URL tiene cambiado para registrar-0.php, y luego est este texto feo
aqu. Me dio ningn pensamiento a el formato de este.

Pero lo que es interesante es que tres valores aparentemente se pasaron en. Esta
es una especie de de PHP equivalente a printf-- vamos a ver lo que realmente ll
ama en un bit-- que slo imprime lo que ha pasado en ella. As que esto sugiere que
esa forma tenido al menos tres campos a la misma, y me viste los escribe en. Uno
de ellos era mi nombre, una era gnero, uno era el dormitorio. Y el capitn ni siqu
iera son enviadas a el servidor debido a que no comprobarlo.
As que esto es para decir al parecer, al momento de enviar las cosas en la web, N
o slo la URL veces change-- a veces no es as. De hecho, el nombre del archivo ha c
ambiado, pero lo que est ausente de la URL que vimos la ltima vez con Google. S?
ESTUDIANTE: Sin cadena de consulta
DAVID J. MALAN: No hay cadena de consulta. No hay signo de interrogacin algo. No
hay signo de interrogacin q es igual a los gatos, como lo hicimos la ltima vez. Y
ciertamente no hay nombre de signo de interrogacin es igual a David o dormitorio
es igual a Matthews, Entonces, dnde es que todos vamos?
Bueno, djame volver a gedit aqu y abrir el primero de esos archivos en mi host vir
tual, host local, pblico directorio de aqu y vete a froshim0. As que resulta que ca
si todos de esta pgina es slo HTML. Y esto podra ser desconocida para usted, pero p
ronto lo ser ms an con PSET 6 y PSET 7 y 8 PSET. Pero esto es slo una pgina HTML.
Y las cosas interesantes parece ser aqu. Una etiqueta de formulario cuyo atributo
accin tiene un valor de registro 0. Es por eso que cuando me someto esto, que va
a ese archivo. Pero el mtodo es diferente puesto de hoy--. As que resulta que hay
al menos dos mtodos utilizados en la web para enviar informacin desde el navegado
r al servidor. Get pone en la URL. Publicar la pone en otro lugar. Y cundo y por
qu podra usted realmente quiere un sitio web utilizar puesto entonces en vez de ob
tener, slo intuitivamente? Cualquier sitio web. Qu tipo de datos debe ser transmiti
da slo por inferencia ahora por correo en lugar para conseguir, si hemos visto la
s dos diferencias? ESTUDIANTE: [inaudible] asegurar. DAVID J. MALAN: Si quieres
algo que sea seguro. As que puede que escriba una contrasea en un sitio web, una t
arjeta de crdito en un sitio web lo hara tipo de estos subptima si el navegador pue
sto que valor dentro de la URL. Por qu? Lo ves, lo que no hace parecen ser una cos
a muy importante, pero las probabilidades son que bastante frecuencia camina lej
os de su equipo informtico o uso laboratorios, y por lo que alguien otra cosa o i
ncluso un compaero de piso podra fcilmente subir y ver que la informacin privada. Cu
ando se enva un correo electrnico a travs de la web, es probable que no quiero ese
final de datos en la URL tambin. Y por lo que hay una serie de razones por qu podra
mos querer ponerlo aqu. Y justo photos--, no puedo incluso bastante imaginar lo q
ue tomara un grfico, como un archivo JPEG, y lo puso en una direccin URL. Usted pod
ra hacerlo. Hay maneras de que lo codifica, pero es no sencillo como eso.
As que el registro 0 es en realidad muy decepcionante. Todo lo que dice literalme
nte es esto. Se imprime en el interior de algunos HTML etiquetas lo siguiente. T
engo una etiqueta PHP aqu anidada dentro de una etiqueta pre. "Pre" slo significa
que el texto pre-formateado, mono-espaciadas, como una mquina de escribir.
Printr es una funcin recursiva de impresin. Y luego est esto Lo interesante aqu. Y v
amos a volver a este porque hay otros, pero el signo de dlar de subrayado puesto
que parece ser una variable en PHP en el que cualquier cosa que enve desde el nav
egador al servidor se almacena para usted. Y vamos a ver cmo conseguir a que la i
nformacin en poco tiempo.
Pero primero, vamos a volver a Un ejemplo ligeramente diferente. Al entrar en re
gister-- o ms bien, froshims1.php, que se ve un poco diferente. Tom un poco ms esfu
erzo con el formato, a pesar de que an as es bastante feo. Pero yo voy a seguir ad
elante y el tipo de "David" ahora. Masculino. Comprobaremos "capitn" esta vez. Ha

remos Matthews. Y registrar.


Y esta vez, dice, hm, no realmente. Muy bien, as que lo del registro 1? Djame ir e
n el registro abierto 1 hm y-. Muy bien, as que esto es interesante, y este es un
paso hacia la ahora los programas ms interesantes.
Observe la parte superior de este archivo tiene un Etiqueta PHP, as como algunos
comentarios. Y estos son, por ahora, una distraccin as que vamos a deshacerse de e
sos comentarios justo como si estuvieran en C. Y afirman con este trozo de cdigo
con un comentario que este cdigo es la validacin de la presentacin.
Bueno, resulta que variables como el signo de dlar puesto de relieve son llamado
sper globales. Son como estos variables globales especiales que son slo omni-actua
lmente disponible dentro de su programa. Y usted puede utilizar la notacin de cor
chetes al ndice en ellos no usando nmeros como 0, 1, 2, 3, pero las palabras reale
s.
As que usted puede pensar en el signo de dlar subrayar puesto como tipo de una tab
la hash que usted podra pasar una llave en, una bsqueda palabra en el medio de los
corchetes, y que va a darle la espalda al valor que proporciona realmente el us
uario. PHP tiene una funcin llamado vaco que slo dice s o no, esta variable est vaca
no. Tenemos estas dobles barras, que slo significa o, como en C.

As pues, en efecto, esta lnea 4 es slo diciendo que si el usuario no ha dado un nom
bre o no dar un gnero o no lo hizo dar un dormitorio, seguir adelante y le rediri
gir o ella a travs de esta lnea aqu. As que esto es un poco crptico, pero esto slo s
ifica literalmente volver a este lugar, por lo que el usuario punts de nuevo a d
onde l o ella vena. Pero es un poco poco elegante en que yo no modificable ella.
Pero lo que si esta condicin si no evala a cierto? Qu pasa si el usuario me dio su o
su nombre y residencia y el sexo? Que si la condicin no es va a evaluar como tru
e, as que no me golpe la salida en la lnea 7. Entonces, qu sucede? Y esto es lo que h
ay interesante sobre PHP.
Usted puede caer dentro y fuera de modo PHP, por as decirlo. Si quieres algo de cd
igo a ejecutar, puede abrir y cerrar una etiqueta PHP y poner el cdigo all como he
hecho aqu. Tan pronto como se cierra la etiqueta PHP, el servidor slo va a escupi
r lo que puso en su lugar. Y, de hecho, esto era parte de el diseo original de PH
P, para bien o para mal, era esto commingling de cdigo y marcado idioma. Y veremo
s que esta muy recae rpidamente en un lo. Y as lo haremos mejor que esta ltima insta
ncia, pero slo cuenta de la facilidad con la que estoy en realidad capaz de ejecu
tar alguna lgica.
Pero sigue siendo un poco decepcionante. Vamos a abrir la versin dos de Frosh men
sajes instantneos, que al parecer, se somete a register2.php. As que este archivo
en realidad va para mirar casi el mismo. Voy a ir a Frosh mensajes instantneos 2.
Pero en Frosh IMs 2, vamos a ver qu pasa.
David, haga clic en el botn de radio, como que se llama; Matthews, ningn capitn. Re
gistrar. Usted est registrado. En realidad no. Oh, espera, que acabamos de hacer
ese ejemplo, no lo hicimos nosotros? Muy bien, se destacan por. Vamos a hacer lo
s tres. Es evidente que algo est a punto a pasar con Gmail. Vamos a llegar all.
As Frosh mensajes instantneos 3 se parece a esto. No es diferente. Pero cuando lo
hago David, varn, Matthews, y inscribirse, esta tercera y ltima versin reclamacione
s, simplemente, que estn registrados realmente. En cierto modo es irrelevante. Pe
ro yo pretendo con este tercera y ltima versin Ahora he recreado exactamente lo qu
e mi compaero y yo construido para los mensajes instantneos Frosh Hace aos del prog
rama. Y fue simple. No haba ninguna base de datos, ninguna hoja de clculo Excel. P
ero lo ms importante, no haba ms papel porque lo que hicimos con este programa fue

a un correo electrnico en realidad el supervisor, quien reciba previamente estas c


osas a travs de las formas.
Y al parecer hemos programado esta en de tal manera que cuando una persona se re
gistra, Mensajes de correo electrnico de la cuenta de John Harvard el proctor-- o
a s mismo en este caso, John Harvard-- con la siguiente texto-- "Esta persona ac
aba de registrar." Nombre es David, el capitn est en blanco; gnero, masculino; y do
rmitorio, de Matthews.

Entonces, qu pas all? Bueno, el archivo en cuestin aqu es aparentemente register3.php


Y si abro esta, vers tanto el poder del cdigo como este y tambin, francamente, la
inseguridad de un sistema como el correo electrnico. He pretendido simplemente ef
icazmente a sea
John Harvard de la siguiente manera.
Tengo la etiqueta php abierto encima de la tapa, que slo dice aqu viene algo de cdi
go PHP. Aqu abajo, resulta que hay son las bibliotecas de PHP. Uno no necesita in
cluir archivos de cabecera como mucho. Usted obtiene ms con el fregadero de la co
cina, por as decirlo.
Pero esta vez en la lnea 4, que hago querer biblioteca especial llamado Mailer PH
P, que es algo que puede instalar de forma gratuita en muchos sistemas. Aqu abajo
estoy validando la presentacin slo comprobando dio el usuario m un nombre, un gnero
y un dormitorio. Y si es as, adelante, una instancia de un anuncio publicitario.
Usted puede pensar en esto como un lnea de cdigo que slo asigna. Es como malloc, pe
ro que es un poco ms sexy en que no se menciona slo malloc y algunos nmero genrico.
Usted dice que me d uno de estos, dame un nuevo uno de estos.
Y si usted ha programado en Java o C ++ u otros lenguajes, que podra haber visto
esto. Sin embargo, el corto de l, si desconocido, esta lnea pone en el correo sign
o de dlar una estructura especial llamada un objeto que se ha incorporado en func
ionalidad de correo electrnico. Y, de hecho, cuenta y sintaxis similar.
Esto no es un puntero, per se. PHP slo utiliza la misma sintaxis. Esta lnea est dic
iendo uso SMTP-- Simple Mail Transfer Protocolo, que es slo el protocolo utilizad
o para enviar correo. Esta es la especificacin de uso El servidor SMTP de Harvard
, que es en algn lugar aqu en el campus.
Esto est diciendo lo que TCP el nmero de puerto con quien hablar, y me imagin que f
uera por googlear o pidiendo la mesa de ayuda. Y luego porque Harvard utiliza al
gunos la seguridad del sistema en el server-- electrnico al menos para cifrar el
trfico entre usted y l, a pesar de que cualquier persona puede enviar a it-- Voy a
encender el protocolo TLS para mantener este seguro.
Pero aqu es donde las cosas conseguir un poco de miedo. Puedo slo arbitrariamente
decir que soy jharvard, y puedo slo arbitrariamente un correo electrnico a m mismo
aqu. Y entonces puedo especificar un sujeto con esta lnea aqu.
Y esto slo se ve feo, pero es slo un montn de concatenacin. Resulta que PHP tiene un
smbolo muy til, al igual que algunos idiomas, el operador punto, que concatena slo
, literalmente, cadena tras cadena tras cadena, y usted no tiene que malloc o fi
gura la longitud total de la cadena. Usted acaba de hacerlo. Y, de hecho, porque
estoy concatenando en todas estas cosas con estos puntos, es por eso que el cor
reo electrnico que enviado miraban como lo hizo.
Y luego, por ltimo aqu, yo estoy enviando correo. As que si esto es falso, Yo slo vo
y a morir, que es una funcin que slo impresiones a la pantalla de algn mensaje de e
rror. Pero es, de hecho, llamando a la funcin de envo. De lo contrario, si todo es
to falla, me vuelve a dirigir aqu.

Y por qu veo que Yo realmente estoy registrado? Bueno, sucedi aqu. As que les traigo
esto para un par de razones.
Uno, este es exactamente como si construyes un sitio web para un proyecto final
o para el mundo real, esto es la forma de enviar recordatorios por correo electrn
ico a sus clientes o sus suscriptores. Esta es la forma de enviar los recordator
ios de contrasea. Esta es la forma de enviar mensajes de personas que tienen un n
uevo Facebook mensaje pendiente o algo por el estilo.
Pero tambin habla el hecho de que esto podra han sido muy bien desde Davin o cualq
uier otra persona. Y digo este tipo de con una sonrisa porque soy muy seguro de
lo que est pasando a travs de varios de sus mentes en este momento. Pero este es u
no de los que lo hacen como yo digo, no lo que hago tipo de cosas, porque es tri
vial forjar correos electrnicos como este. Pero como usted pudo haber visto o lee
r en el carmes, en los ltimos tiempos es tambin bastante trivial para la gente para
rastrear de nuevo a algn origen. Y me pregunte algn tiempo, tal vez en el almuerz
o CS50, cmo yo primero se familiarizaron muy de cerca casi a la Junta ed muchos ao
s hace cuando descubr cmo funcionaba el internet. As que en cualquier caso-- ligera
mente despus de que el consejo hizo ed.
As, en cualquier caso, hay una todo grupo de sper globales, como se les llama aqu,
uno de los cuales nos saw-- puesto dlar signo de subrayado. Hay una contraparte l
lamada get, que es donde las cosas desde una URL termina yendo. Y hay un montn de
otros, tambin-- sesin y el servidor y la galleta. Volveremos a la galleta en otro
momento, pero la sesin es una especie de fresco porque justo ahora-- hasta ahora
-- todo lo que he hecho con un navegador web es una especie de aptrida, por as dec
irlo. Puedo hacer clic en torno, el acceso archivos en el servidor, algo que suc
ede en la pantalla, pero a continuacin, la conexin se cierra. El Internet Explorer
o el Firefox icono deja de girar y que acaba de ver lo que que la pgina web cont
iene.
As que HTTP no tiene estado en que una vez que se hace una conexin, obtiene alguno
s datos, eso es todo. No hay ms conexiones, a diferencia de Skype, a diferencia d
e Facetime, Gchat diferencia, que mantiene una constante conexin con el servidor.
La web es fundamentalmente desconectado, a pesar de que va a ver en poco tiempo
cmo podemos simular cosas como el chat de Facebook y Gchat, que mantienen la ill
usion-- o en realidad hacer mantener un constante conexin utilizando la tecnologa
ms moderna.
Pero si voy a, digamos, counter.php, este es otro ejemplo sencillo, como veremos
, que piensa en la actualidad Visit el sitio el tiempo cero. Pero si simplemente
recargar la pgina, de alguna manera sabe que estuve aqu antes. Si vuelvo a cargar
de nuevo, sabe que estuve aqu antes. Y una y otra vez y otra vez y otra vez.
As que hay un poco ms-plussing pasando, pero aviso la cosita gira siempre tan brev
emente hasta la parte superior y luego se desconecta, por lo que no es como si t
uviera una constante conexin a mi aparato. Bueno, si voy en counter.php, cuenta l
o fcil que es. Yo llamo a esta primera especial funcin que vamos pronto empezar a
tomar por sentado llamado inicio de la sesin. Iniciar una sesin.
Y una sesin de ahora en adelante es slo va a ser un cubo, como un carrito carrito
en el que usted puede poner los valores y el tipo de confianza como programador
que ellos van a estar aqu cuando ese usuario viene una segunda parte posterior-ms tarde, una hora ms tarde, incluso un ao ms tarde, siempre y cuando l o ella no se
borra sus galletas, como veremos con el tiempo vemos. Y ahora slo tengo si una co
ndicin aqu. As que si la clave siguiente, llamado contador, est situada en el interi
or de este super global-- este hash mesa, si Voluntad-- llamado perodo de sesione
s, a continuacin, seguir adelante y tomar la valor de la reflexin session-- en est
o como un carrito cart-- y almacenarlo en una variable temporal llamada contador

.
De lo contrario, si ese valor era contador no se establece en la llamada cesta d
e la compra, slo inicializar a 0. Por ltimo, aqu abajo, ir y volver a poner en los
carros de la compra o de la sesin el valor del contador 1. As que resulta que esta
aqu-- especial contenedor que, de nuevo, es uno de ellos asociado matrices, una
matriz que usted puede indexar en palabras en lugar de numbers-- persiste inclus
o despus de que el usuario se va. Una vez ms, voy a ir de nuevo a la pgina ahora. H
a sido un minuto ms o menos. Pero recuerda que yo tengo estado aqu 19 veces antes.
Este es mi 20mo visita.
Y por lo que este va a ser clave para la implementacin de cualquier sitio web que
recuerda que est conectado, que se pone algo literal en su carrito de compras pa
ra comprar o que tiene alguna nmero de mensajes en espera. Cada vez que desee rec
ordar la informacin, veremos que PHP, como varios otros idiomas, nos provee de es
ta ilusin de estado a pesar de que, como se ver en PSET 6, como usted est haciendo
peticiones HTTP desde el cliente al servidor, eso es todo. Una vez que llegue de
nuevo que respuesta, no hay nada ms regresando desde el servidor de forma predet
erminada. Pero vamos a ver cmo trabajar alrededor de eso.
Bueno, ahora, vamos a tratar de limpiar esto un poco. Hemos visto unos pocos dif
erentes ejemplos all. Ah, y como un aparte, para los que estn familiarizados o no
familiar, la razn de que la Ejemplo Frosh mensajes instantneos se fue de mirar rea
lmente feo para slightly-- bien, todava ugly-- a ligeramente menos feo aunque tod
ava feo es porque si miramos en el cdigo fuente aqu, resulta que tengo este en la p
arte superior del archivo.
Resulta que de arranque es uno de los muchos bibliotecas libremente disponibles
por ah que no existe para los lenguajes de programacin siempre, pero para CSS o Ja
vaScript o HTML o cualquier nmero de idiomas.
Y estas personas aqu-- originalmente sali de Twitter-- slo tienen un montn de estilo
s. Es un archivo masivo aqu que alguien escribi, o de alguien escribi, con el tiemp
o que especifica los colores y el formato y otras cosas para que yo pueda tipo d
e pedir prestado su sintaxis y no tener que averiguar cmo disear mi forma. Esto ta
mbin se minified de manera que una computadora puede entenderlo pero no necesaria
mente un ser humano. As que eso es slo por eso que el estilizacin no cambi.
Pero ahora vamos a hacer mejor en trminos de diseo, porque si nos quedamos abajo e
ste camino demasiado largo, nuestro cdigo va a conseguir sucio y desordenado. As q
ue vamos a centrarnos en estos ejemplos aqu. La ltima por hoy.
As que aqu es un super sencillo la versin 1.0 de la pgina web del CS50. Slo tiene enl
aces a conferencias y programa de estudios, y se est utilizando esa lista desorde
nada tag-- la etiqueta de UL que se utiliz la ltima vez. Y si de hecho, si abrir V
iew Page Source, vers que esto es muy, muy sencillo de HTML. Y de hecho, a pesar
de que esto es un archivo PHP debajo de la capilla, Todava es slo escupir solament
e HTML, por ahora.
As que si hago clic en conferencias, vemos que esto ocurra. Y si hago clic en la
semana cero, vemos esto. Y si hago clic en Mircoles, vemos esto. Y esto al parece
r fue el PDF de las diapositivas de ese da. Lo nico que he hecho es enlace con un
etiqueta de anclaje a esta URL aqu.

As que esto es slo para decir que este es un bonito versin simple de la pgina web de
l CS50. Vamos a ver cmo se implementa. Si entro en el directorio mvc0, vamos a ve
r un par de archivos. Uno de ellos es un README, as que si algo de esto es demasi
ado rpido, que slo puede hurgar ms relajado despus. Y fjense en aqu es un archivo ind
x.php. Resulta que si t mismo, el ser humano, no especifique el nombre definitivo
en una direccin URL, el servidor web por lo general infiere algn nombre por defec

to para usted. Un punto ndice algo generalmente es el valor predeterminado.

As que por eso hace un momento cuando visit este URL aqu, ningn nombre de archivo, n
o hay ningn archivo extensin, ningn perodo en la direccin URL. Slo saba de alguna ma
a mgica buscar index.php. Es slo una convencin. Podra ser llamado cualquier cosa.
As que si ahora me voy a index.php, vers que, indeed-- vamos deshacerse de los com
entarios aqu porque no hay realmente nada interesante que it-- esto es slo modific
able HTML. As que eso es consistente, sin embargo, con mi reclamacin que se pueden
mezclar HTML y PHP. No hay real programacin lgica aqu.
Y los otros archivos son bastante mucho tan poco interesante. Es slo una semana-c
odificado aqu para una semana m y una semana w, para el lunes y el mircoles. Y lue
go, si abro la semana cero, cuenta que es casi idntica.
Y eso es una especie de conclusin clave. Observe cmo esto es redundante. Estos arc
hivos apenas cambian, y sin embargo yo tirado uno de estos puestos de trabajo de
copia / pasta donde tom una file-- presumiblemente en la semana que zero-- copia
do cuando una semana lleg, y ajustado algunos valores. Probablemente deberamos ser
capaces de hacer mejor que esto.
As que vamos a volver hasta mvc y entrar en una versin. Y noto que tengo una algun
os archivos, ya que lo que era comn a todos esos archivos slo una momento ago-- si
vuelvo a la versin 0, vamos a ir de nuevo en el ndice, y slo postulate-- una vez q
ue me deshago de la comments-- qu parte de esta pgina es de suponer en cada uno de
mis archivos? Slo tiene que llamar a cabo. Qu se duplican lneas probablemente a tra
vs de todas estas pginas? S?
ESTUDIANTE: [inaudible].
DAVID J. MALAN: del 1 al 9. S, absolutamente. 1 a 9, excepto tal vez 8 cambia un
poco porque CS50 se convierte en conferencias o semana cero o algo as. Pero casi
idntico. As que todo esto es slo tipo de copiado y pegado. Y hay un par otras lneas
se me ocurre de que son probablemente idntica a travs de todos los archivos.
ESTUDIANTE: 12 y 13. DAVID J. MALAN: S. Claro, 12, 13, y 14, probablemente, slo po
rque las cosas interesantes que est sucediendo en las lneas 11 y 10, por lo que pa
rece. As que echemos un vistazo a la versin 1, que trata de mejorar esto. En la ve
rsin 1 de este ejemplo-- mvc vamos a explicar lo mvc medios en un moment-- si ent
ro en ndice, tipo de parece un poco confuso ahora. No es tan simple como antes.
Pero una vez que comience a leer con cuidado, es bastante sencillo lo que est hac
iendo. Al parecer, la lnea 1 y lnea 8 han sustituido todas las cosas que simplemen
te identified-- aunque slo por si acaso, Dej las ULs all por si acaso alguna das no
tenan una lista de las cosas. Y as lo requieran es algo as como la libra incluir en
C. Copia y pastas el contenido efectivamente aqu en este archivo.
As que en header.php, como usted podra inferir de su nombre, va a ser la cabecera
de la pgina. Es una especie de hurfano aqu. Slo tiene la parte superior a la misma,
pero no hay ms contenido a continuacin.
Y si miro a pie de pgina por su parte, que era el otro archivo mentioned-- ste es
mucho menos interesante, pero de nuevo, es comn a todo. As que este es el pie de pg
ina. Este es el encabezado. Este es el archivo que es cambiar, as que por qu no tr
atar de factorizar la comunalidad con estas dos lneas aqu?
Pero podemos limpiar esta un poco ms lejos. Voy a seguir adelante y abrir la vers
in dos, donde ya veremos que no hay un nuevo archivo, helpers.php. Vamos a ver lo
que es eso en un momento. Vamos al ndice, como el punto de entrada como antes.

Y ahora noto que estoy requiriendo helpers.php, no la cabecera o pie de pgina. Pe


ro los ayudantes es algo as como helpers.c y helpers.h de PSET 2 o PSET 3 Hace mu
cho tiempo, cuando en realidad se hizo buscar y encontrar para que PSET, y que t
ena todo el cdigo para la clasificacin y la bsqueda en un archivo separado. Eso es l
o que est pasando aqu.
Y ahora la lnea 3 se ve un poco diferente. Y es slo una lnea. Para hacer esto an ms c
laro, yo podra simplemente Qu esto sea estilsticamente coherente con todo lo dems qu
e hemos hecho. Pero eso no es realmente cambiar la funcionalidad. Es slo una lnea
de cdigo real.
Al parecer, hay una funcin en algn lugar llamado render de cabecera, Y aqu es donde
las cosas ser bastante potente. Tenga en cuenta que en el interior de sus parnte
sis es lo que otra pieza de sintaxis? Es probable que sea un poco difcil de decir
, pero notar there's-- voy a poner un poco de blanco espacio. Hay corchetes.
Y entre corchetes que vimos hace un poco en el contexto de matrices asociativas,
que son, de nuevo, al igual que las tablas hash. Y si usted piensa ahora a C, l
a orden de argumentos en una funcin tiene que ser siempre el mismo. Hay que recor
dar lo que el ordenar x es--, y, z o z, y, x-- y usted tiene que proporcionar si
empre los en el mismo orden o mirar hacia arriba si se le ha olvidado.
Pero esto parece ser una forma inteligente pasando de un valor clave arbitraria
pares por lo que el ttulo es el nombre de un argumento en este caso y CS50 es su
valor. Y el hecho de que tengo estos corchetes aqu significa que pude tambin pasar
en algo como una semana es 1 o 0 o 2 o 3. Para ello hemos parametrizamos esta f
uncin de una manera tal que puede tomar mltiples entradas, pero por ahora es slo el
uno.
Si ahora voy a helpers.php, observe lo que est haciendo. Esto es un poco de nueva
funcionalidad, pero por ahora slo tomar en la fe de que esto es la sintaxis con
la que definir una funcin en PHP. Usted, literalmente, dice la funcin. No se espec
ifica un retorno escriba, y eso es consistente con el detalle de la variable ant
erior donde usted realmente no escribe fuertemente.
Esto slo especifica que, por defecto, esta toma un asociativa matriz como un argu
mento. Y sabes qu? Si el usuario no pasa uno en, asumir un valor por defecto.
Esta es una caracterstica que C no tiene para nosotros, lo cual es bueno, porque
ahora datos, incluso si no le dan nada, va a ser un matriz, pero uno vaco. Y como
un aparte, extracto apenas hace algo cobarde donde toma todas las claves de est
e matriz asociativa, todas las cosas se puede poner entre corchetes, y crea las
variables de ellos por lo que en ltima instancia, podemos tener acceso a ellos en
footet.php y header.php. Eso es un poco abstracto, as que permtanme sealar esto.
En index.php, noto que estoy que pasa en un par de valores clave del ttulo con un
valor de CS50. Si ahora miro helpers.php, notar que RenderHeader se extrae que
los datos que estoy pasando en, y luego requerir header.php. Lo que he hecho es
una especie de un pobre hombre de aplicacin ahora de la siguiente.
Si abro header.php, Tenga en cuenta que yo ya no tengo duro codificada la palabr
a CS50 en este archivo de cabecera. He puesto este reconocidamente atrozmente fu
ncin con nombre, HTML caracteres especiales, en ese pas. Pero noto lo que he hecho
. Tengo HTML abierto. Entonces tengo la cabeza abierta y el ttulo abierto.
Y luego en el interior de del ttulo abierto y cerrar etiquetas, tengo un poco de
cdigo PHP. Y este es un bonito pero de sintaxis, que slo significa echo fuera. Sig
nifica literalmente esto-- eco de la following-- pero esto es ms atractivo para e
scribir. Echo a cabo el ttulo que ha sido aprobada en.

Pero qu te parece HTML Char especial se trata, especialmente si usted tiene alguna
experiencia previa en HTML? Cul podra ser caracteres peligroso para pasar a una pgi
na donde se est generando dinmicamente la pgina web con un cdigo como este? Djame ir
a este archivo, versin dos, y ver si no puedo inducir esto.
Versin dos es esto. Y cuenta todo est muy bien, trabajando bien. Pero supongo que
voy a index.php y He especificado que el ttulo de mi pgina no es CS50. Es alerta g
uin soporte abierto hola mundo, comilla simple cierre, parntesis de cierre, punto
y coma, soporte abierto, guin barra.
Guin, como veremos finalmente ver, es una etiqueta que se puede utilizar con el u
so de otro lenguaje de programacin llamado JavaScript dentro de una pgina web. Y a
hora cuenta de la lgica aqu. He aqu una clave llamada ttulo. Aqu es su valor a largo
loco ahora.
Pero si voy a los ayudantes pgina- o ms bien, la pgina de cabecera, Voy a llamar a
esta funcin en ese ttulo por primera vez. As que si ahora vuelvo a cargar esta pgina
, ver esto, que parece ridculo, pero es seguro. Slo se ve estpido.
Pero supongamos que en lugar Me haba olvidado de esto. Y recuerda mis palabras, u
n nmero distinto de cero de que usted se olvide de hacer esto y obtendr algunos in
dustriosos estudiante o amigo que sube para que en la feria CS50 o annimamente en
la noche hurgando en su pgina web y, esencialmente, la inyeccin de cdigo sin el co
nocimiento de que en su sitio de alguna manera.
Porque si yo simplemente escupir a ttulo aqu y ttulo all-- bien, si el ttulo literalm
ente se parece a esto y PHP como un lenguaje que puede escupir a cabo otro texto
lenguas, esto es, literalmente, va para reemplazar esta etiqueta con, por supue
sto, lo que he puesto en otro lugar.
As que si yo ahora voy aqu y volver a cargar despus deshacer los mecanismos de segu
ridad, Ahora tengo hola mundo aqu. Ahora eso no es todo tan grande de un acuerdo,
pero se podra hacer algo un poco ms malicioso aqu, como si hubiera otra tags-- com
o veremos, una vez que pasamos ms tiempo en JavaScript-- como ubicacin punto href
consigue, cita, fin de la cita, HTTP business.com, pero lo contrario de que desd
e el otro da. Y ahora usted puede inducir una web pgina para ir en realidad inmedi
atamente a esta pgina web aqu.
Y en realidad, no quiero para incluso ir a business.com porque yo no quiero sabe
r lo que es eso. Pero esto, tambin, se disparar cdigo para ser inyectada en esta pgi
na. As que esto es slo para decir que a pesar de que estamos introduciendo sper tem
prano en algunos de estas estructuras ms complejas, es todo hacia un fin de asegu
rarse que el cdigo no es explotable.
As que ahora una tercera versin aqu. Se est haciendo un poco ms de lujo. Realmente no
me como-- la parte anal de m estaba un poco molesto por la hecho de que una func
in que haba llamado RenderHeader y RenderFooter que eran casi idnticos. As que se me
ocurri, por qu no lo hacen Yo parametrizar estas funciones en una sola llamada ren
der, haga que tomar un segundo argumento como el nombre de la plantilla, a la fi
nal a render-- ya sea encabezado o pie de pgina? Y a continuacin, opcionalmente, s
i quiero para pasar en algunos pares de valores clave como lo hago por el ttulo d
e la cabecera, pero no para el pie de pgina, Yo podra hacer eso.
Y ahora si me voy en helpers.php, que es un poco ms complejo. Y voy a agito mis m
anos en el detalles, pero es slo una funcin. As que eso es un paso hacia un mejor d
iseo.
Podemos tomar un paso ms all. Si me voy a mi cuarto versin de este, cuenta ahora qu
e estoy haciendo algo an ms tipo de crptico. Y s que esto es un mucho para absorber
a la vez, pero estamos slo un poco de la limpieza de las cosas. Ahora me estoy po

niendo mis ayudantes presentar en una carpeta llamada includes-- slo una arbitrar
ia nombrar a donde quiero poner cosas que quiero figurar y despus el resto de est
e es el mismo.
Pero si miro ahora en gedit, aviso de que me he librado de todos los otros archi
vos y tengo ellos movido, por ejemplo, en aqu. Y luego en las plantillas, Tengo e
sto, tambin. Y as, todo esto es ahora hacia un paso de utilizar un patrn de diseo mu
cho mejor. Y estamos muy rpidamente va a alejarse de funcionalidad por defecto de
PHP, que empezamos aqu con, donde se acaba de mezclis PHP, y el cdigo HTML, CSS y
su, y que acaba de escupir hacia fuera y usted va sobre su camino. No va a ser m
uy fcil de mantener. Al igual que en C, que empezamos a utilizar varios archivos
y mltiples funciones y cosas de factoring eso. Vamos a hacer lo mismo aqu. Y de he
cho, en la quinta y ltima versin aqu, lo hice otra cosa. Usted puede incluso utiliz
ar punto punto, que, de nuevo, es slo el directorio padre. Para ser an ms conscient
es de la seguridad, porque si miro a la escucha aqu por quinta y ltima versin, prev
io aviso que tengo un directorio llamado aqu pblico, y luego en el mismo nivel, po
r as decirlo, Tengo incluye y plantillas y luego ese archivo de texto Lame.
Y la razn por la que he estructurado Cmo es esto-- y tantos web anfitriones, espec
ialmente los $ 5 los meses o los 10 dlares al mes, si alguna vez has tenido uno d
e estos services-- lo que muchos de ellos lo hacen es que slo esperan que volcar
todo de tus archivos en un directorio, como ya hicimos con este primer ejemplo.
Pero tan pronto como se inicia la construccin ms sitios sofisticados que slo almace
nan datos que se preocupan por usted y archivos preocuparse, en realidad la orga
nizacin de las cosas correctamente y con ms seguridad conciencia en la mente puede
empezamos a defender contra todos los amigos que usted tiene ya sea en o fuera
de esta clase que, tan pronto como usted comienza a hacer programas usted mismo
en la web, van a empezar a recoger sobre usted y sobre ellos.
Y as vamos a ver en ltima instancia, en este diseo. Esto es slo una imagen que repre
senta lo siguiente. Vamos a poner todo de nuestra lgica de programacin en uno o ms
archivos, y vamos a empezar justo llamando a los controladores. Es donde los cer
ebros de nuestros sitios web son en realidad. A continuacin, vamos a tienen punto
s de vista y opiniones son tan simple como independiente files-- llamados planti
llas, a menudo. Slo tienen la esttica de mi pgina, lo que quiero de la pgina para bu
scar como-- los colores y el diseo y las posiciones de todas las variables.
Y luego ms interesante que con el tiempo vamos a llegar a es el modelo, que va a
ser justo la palabra nos palmada en otras tecnologas que traemos en el imagen, al
igual que las bases de datos reales, por lo que cuando se quiere para guardar l
a informacin, usted no acaba de enviar un correo electrnico a su supervisor oa ust
ed mismo, en realidad se almacena en una base de datos utilizando otro lenguaje
conocido como SQL. Y as vamos a dejar aqu hoy y recoger con este mircoles bases de
datos e introducir a continuacin.
[REPRODUCCIN DE MSICA]

You might also like