Professional Documents
Culture Documents
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?
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
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
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
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
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
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.
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]