[Powered by Google Translate] [Semana 8, continuación]
[David J. Malan] [Harvard University]
[Esta es CS50.] [CS50.TV]
>> Esto es CS50, por lo que este es el final de la semana 8 aquí.
Nosotros, por supuesto, tenía un poco de un huracán a principios de esta semana,
por lo que ahora es realmente sólo tú y yo en esta sala de conferencias,
pero hoy en día continuamos nuestra conversación sobre PHP
y acerca de la programación web en general, y también introducir la idea
de bases de datos, especialmente uno llamado MySQL, que es muy popular en estos días,
en gran parte debido a su escalabilidad, así como por su ser libre y de código abierto.
>> Pero primero, una mirada a donde lo dejamos la última vez.
Recordemos que estábamos buscando en los varios ejemplos Frosh mensajes instantáneos,
y ésta era la forma horrible en que me ocurrió con unos 15 + años
con el fin de que los estudiantes en el campus de registro para los deportes intramuros de primer año
sin tener que caminar más por el patio a Wigglesworth
la caída de una pieza física de papel debajo de la puerta un poco de Proctor.
En su lugar nos trasladamos todo en línea, pero para eso es necesario hacer un uso
de unas pocas tecnologías, por lo que uno, necesitábamos HTML, HyperText Markup Language,
que a su vez es este lenguaje de marcado con la que hacer paginas web estructuralmente.
>> Con un poco de CSS en estos días, las hojas de estilo en cascada,
en que podamos utilizar estilizaciones de la página web utilizando una sintaxis ligeramente diferente,
mientras que el HTML es todo acerca de la estructura del mismo.
También tenemos que introducir un lenguaje de programación web.
En este caso, vamos a utilizar PHP, PHP y nos va a permitir
al contenido de la salida de forma dinámica, así como hacer las cosas como programáticas
el envío de correos electrónicos, como fue el caso en la nota que dejó la semana pasada.
>> Recordemos que el código para esto fue en 2 partes.
Uno de ellos, tuvimos froshims3.php,
y esto fue en gran medida el marcado con un formulario HTML dentro de ella,
un poco de CSS aquí en los atributos de estilo
de modo que la forma en sí se centra en la página, pero más allá
tuvimos algunos insumos forma representativa, un campo de texto, una casilla de verificación,
Algunos botones de radio, un selecto menú y un botón submit.
Y a través de este formulario, nos presentó a un archivo que se llama al parecer register3.php,
que a su vez se veía un poco de algo como esto.
Ahora, la mayor parte del código en register3.php, recordar, trataba de correo electrónico.
Lo hizo un poco de la validación de la forma que se presentó para asegurarse de que
que los campos fueron realmente que se esperaba.
Luego llamamos a algunas funciones de PHP usando un poco nueva sintaxis,
a pesar de que está tomado de C.
>> Este operador de flecha nos permite hacer uso de algo que se llama programación orientada a objetos.
No vamos a entrar en eso en detalle aquí, pero sabemos por ahora
que es una manera de tener funciones asociadas con los objetos,
que son un tipo especial de estructura, como vimos en C.
Pero por ahora, sólo tener fe en que esta es la sintaxis correcta para utilizar
cuando se utiliza una biblioteca como esta biblioteca PHPMailer.
Y luego, al final de este archivo que habíamos generado dinámicamente un e-mail
que fue enviado a mi cuenta jharvard@cs50.net
de mi cuenta jharvard@cs50.net,
y nos informaron al usuario en consecuencia que se habían registrado para este deporte.
Eso es más o menos lo que el sitio Frosh IMs hizo hace tantos años
cuando lo implementa, es cierto, en un idioma diferente,
pero quizás te muestra el poder que tiene
ahora que usted puede expresarse no sólo mediante programación
a un nivel bajo en un lenguaje como C, pero a un nivel mucho más alto
con estas aplicaciones en el mundo muy reales como el correo electrónico para resolver realmente
algunos de los problemas del mundo real.
>> Ahora, por supuesto, aunque yo uso este script para generar algún
correos electrónicos de forma dinámica jharvard@cs50.net, que es en realidad una cuenta
que tengo acceso, seas muy cuidadoso al enviar
Mensajes sólo de las cuentas que están en realidad su cuenta,
no sea que las cosas que te dan en un poco de agua caliente en la vida.
Dicho esto, vamos ahora la transición a la solución de un problema totalmente diferente,
la de los estados de retención.
Ahora, ¿qué significa esto realmente?
HTTP, el protocolo de transferencia de hipertexto,
en realidad es un protocolo sin estado, y lo que esto significa es que
cuando acabas de llegar algo como Google.com y luego pulsa enter
por lo general su navegador tiene algún tipo de icono volador que luego
resulta en alguna página web que se está descargando,
y luego que pequeño icono deja de girar, y que en realidad sugiere
HTTP que ha completado algún tipo de conexión con el servidor y ya está.
HTTP es el estado en el sentido de que no mantiene
una conexión permanente con el servidor de la misma manera que lo hace Skype
o Gchat hace porque con HTTP
el supuesto es que una vez que fue a buscar una página web que ya está.
>> Ahora bien, en la realidad estos días en sitios como Facebook y Google Maps
y Twitter y similares hay mucho más dinamismo por el cual
incluso después de que el icono deja de girar puede de hecho tener más actualizaciones
desde el servidor, más tweets, más actualizaciones de estado en Facebook y similares.
Pero incluso eso está utilizando una técnica que vamos a hablar en una semana o dos
conocida como Ajax usando un lenguaje llamado JavaScript
pero al final de la día, HTTP es todavía sin estado.
Y sin embargo, si usted quiere recordar alguna manera las cosas acerca de un usuario
incluso después de haber desconectado del servidor
PHP hace permitirse que un medio de hacer esto
porque, como vimos por última vez, PHP tiene una serie de superglobales,
y un superglobal es, de nuevo, una variable global especial
que es entregado a usted por el servidor web y PHP por sí mismo.
>> Usted no tiene que hacer nada para poner los valores en ella,
y entre las superglobales que hemos visto hasta ahora son GET y POST,
que es donde se colocan los campos de formulario de forma automática,
así como un par de otros que no hemos visto todavía.
Dentro de $ _SERVER algunas variables especiales relacionadas con el propio servidor.
¿Cuál es la dirección IP, qué protocolo, HTTP o HTTPS usaste,
qué método usaste solicitud y similares, por lo que hay algunos interesantes,
jugosos detalles sobre el servidor, y de hecho, el usuario así como en allí.
Hay $ _COOKIE, que es donde estas cosas llamadas cookies se almacenan.
No vamos a dedicar tiempo a sí mismas galletas hoy,
pero sabemos por ahora que una cookie es una pequeña pieza de información
que un servidor web se puede plantar en un navegador web
ya su vez su memoria RAM o el disco duro de su ordenador
para almacenar información acerca de un usuario, por ejemplo, su nombre de usuario
de modo que no tenga que escribirla cada vez que inician sesión en o algunos
número único o identificador para ese usuario
de modo que usted no tiene que molestar con el mismo tipo de preguntas sobre
preferencias en el futuro, pero la mayoría de los intereses
en estos momentos es de $ _SESSION.
>> Esta superglobal, que, como los demás, se entrega de forma automática por PHP
cuando escribes sitios web basados ​​en PHP
puede almacenar lo que quieras, cadenas, enteros,
puntos flotantes, valores, matrices, objetos,
Realmente cualquier cosa que desee, y le permite almacenar de forma
que incluso si el usuario lo visita de vez en cuando
regresa un minuto a partir de ahora o 5 minutos a partir de ahora, porque
se toman su tiempo antes de pulsar algún otro enlace
PHP se asegurará de que lo que pones en esa sesión superglobal
minutos o 5 minutos hace todavía estará allí cuando regrese el usuario.
Y debajo de la capucha esta superglobal sea implementada a través de
esas cosas llamadas cookies, pero por ahora, es sólo una abstracción
por lo cual es una especie de equivalente programático de un carrito de compras.
Lo que usted, el programador, puesto que en
matriz asociativa superglobal estará allí cierto número de minutos más tarde
hasta que lo elimine, o hasta que el usuario sale de su navegador completo.
>> Echemos un vistazo a un ejemplo de cómo esto se utiliza realmente.
En counter.php entre piezas actuales de código
tenemos la siguiente línea.
Al inicio de este archivo tenemos un montón de observaciones azules, que son poco interesantes por ahora.
Sin embargo, en la línea 13 tenemos una nueva línea,
session_start, y que en realidad hace exactamente lo que dice.
Se inicia sesiones.
Le permite usar esa gran superglobal $ _SESSION, y es tan simple como eso.
Ahora bien, si se procede a observar la línea 16, vamos a tratar de averiguar lo que esta página web se va a hacer.
If (isset ($ _SESSION ["contador"]) y luego seguir adelante
y guardar en la variable de contador, contador minúsculas,
$ _SESSION ["Contador"].
Esto parece que se declara una variable local llamada contador
dentro de los cuales se trata de poner una copia de todo lo que está dentro de la superglobal
llamado período de sesiones en la ubicación "contador".
Si no, al parecer, este pequeño mostrador variable local, se inicializa a 0.
>> Pero entonces, unas líneas más adelante en el 26 aviso de que copia de la sesión de mostrador,
su llave, tiene un valor asignado nuevo que es su valor actual más 1.
En resumen, este archivo parece estar actualizando
un contador que está almacenado en el interior de la superglobal sesión
en un incremento de 1, pero primero conserva una copia del valor anterior
almacenándolo en una variable local llamada $ mostrador,
y entonces aquí vamos a ver lo que queda.
Resulta que es más o menos sólo HTML.
En la parte inferior de esta página podemos ver en la línea 37 que he visitado este sitio
número del contador de tiempo, así que hay un par de características interesantes.
Uno de ellos, se trata claramente de una variable, pero no es suficiente para poner sólo
$ Contador en el cuerpo del HTML porque claro
si sólo hay entre su PHP HTML se va a suponer que es sólo HTML.
Usted, literalmente, quiere $ contador que se imprimirá en la pantalla.
>> Pero en vez de caer en el modo PHP
con este pedazo de sintaxis que dinámicamente se puede insertar un valor aquí
muy similares en espíritu a lo que hicimos la última vez con
insertar valores en cadenas.
De hecho, esto es sólo una notación abreviada para decir algo como esto en forma literal,
print ($ contador) o incluso algo como printf (% s, contador),
o incluso, como usted pudo haber visto en Internet o en libros de texto,
hay una función en PHP llamada eco
que hace lo mismo, y todos esos son sólo formas más prolijas
de decir: <? =.
En este caso uno que no es necesario poner
el PHP palabra después del signo de interrogación.
Esta es la notación abreviada para, de nuevo, lo que acabamos de ver hace un momento
que se hace eco de algún valor.
>> Vamos a ver lo que el resultado final de esto es en realidad.
Permítanme repasar en nuestro fichero counter.php,
y vamos a ver que David cometió un error al jugar con el código allí.
Vamos a arreglar lo que sea que la pata,
y el error parece estar allí, ido, en la línea 37.
De acuerdo con la parte superior de esta página que ha visitado este sitio 0 veces.
Bueno, vamos a seguir adelante, ahora y en la parte superior del navegador, haga clic en el
volver a cargar icono, y haga clic en recargar,
y ahora he visitado el lugar 1 vez, 2, 3, 4, 5, 6, 7, 8.
Y de hecho, si nos fijamos en la fuente de esta página el código fuente actual está cambiando,
y notará la ausencia total de PHP, y eso es porque
Código PHP se evalúa o interpretados del lado del servidor,
y por lo que significa que la salida de la secuencia de comandos PHP es lo que en última instancia se envía al navegador,
que en este caso es un HTML cruda y algo de texto en bruto.
¿Qué está pasando aquí?
>> Bueno, con relativamente pocas líneas de código que soy capaz de almacenar
persistentemente en el transcurso de varios segundos, o si esperar lo suficiente,
minutos, incluso horas, un valor de una manera que hace HTTP
parecer con estado como si ya hubiéramos retenido
esta conexión con el servidor, y es sólo recordar lo que le dije la última vez,
pero en realidad hay un montón de complejidad pasando debajo de la capucha
participación de las cookies que se permitan PHP para darme esta ilusión
de la cesta de la compra-como característica.
Por ahora, un ejemplo trivial, donde sólo estamos almacenando un número entero,
pero esa característica volverá a ser de gran valor
cuando empezamos a hablar acerca de los proyectos más complejos,
entre ellos Problema 7.
Esta es tu problema último puesto en CS50.
Lo sé, es muy triste, pero lo que encontrará es que vamos a concluir
esta parte del semestre por hecho la transición
a partir del contexto de C ciertamente para el contexto de PHP
pero durante el uso de algunos de los fundamentos mismos
hemos hablado hace algún tiempo.
>> El objetivo conjunto de procesadores con 7 es implementar CS50 Finanzas,
que es su propia versión de Yahoo Finance o Google Finance
o incluso Etrade.com por el que usted tiene la capacidad de
consultar precios de las acciones de los símbolos dados, pero aún más que eso
usted tiene la posibilidad de "comprar" y "vender" acciones
que se negocian en las bolsas de valores diferentes, porque como esta tu página de inicio
aquí sugiere, que es realmente la medida en que hemos comenzado
el conjunto de problemas para usted, usted tiene un formulario de acceso que está pidiendo un nombre de usuario y una contraseña.
Dispone de un botón de envío, pero a partir de entonces, a medida que el tiempo lo verás,
no hay nada que realmente está pasando debajo de la capucha todavía, ya que
queda por implementar la posibilidad de registrar nuevos usuarios,
la posibilidad de comprar acciones, la venta de acciones,
mirar realmente los precios actuales de las acciones.
>> Y de hecho, esta será como mundo real como sea posible porque hicimos
incluir un poco de código que le permitirá con una sola función
para consultar Yahoo Finanzas, que maravillosamente pone a disposición de los datos libres
para buscar precios de las acciones basadas en el símbolo de la acción o símbolo ticker,
y obtiene nuevamente el precio actual de las acciones del día.
Los datos que en realidad estás viendo en este conjunto de procesadores en particular será
acerca de como el mundo real, ya que se puede obtener de modo que en realidad estás interfaz
con las acciones del mundo real, los precios del mundo real,
y vamos a ver cuánto dinero usted puede hacer tal vez
lo largo de los siguientes días de jugar con su conjunto propio problema.
>> Pero primero vamos a sentar las bases para la forma de diseñar algo que es ciertamente más complicado
que counter.php, que es más complicado que cualquiera de los ejemplos Frosh IMs hasta ahora,
y vamos a tratar de introducir unos pocos paradigmas aquí que nos permiten
tanto para el conjunto de procesadores 7 y tal vez para su proyecto final, si usted hace algo basado web
para mantener su código bien organizado, para mantenerse sano,
y dar un paso hacia la colaboración, ya sea en el proyecto final CS50
o más allá de si continúa programar algo en el futuro.
Hay un paradigma de diseño en general
en la informática y en el desarrollo de software en general, más
conocido como MVC, modelo vista controlador,
y esto es un acrónimo que describe una tonta idea muy bonita,
que es la separación de los diferentes aspectos de un programa,
específicamente mantener separada la lógica o la lógica empresarial de un sitio web
de modo que todo lo que implica cosas como
llamar a las funciones y consultar bases de datos y similares
no sucede entre tu HTML
sino más bien en archivos separados y, de hecho, hay un archivo de un
típicamente que usted ha llamado el controlador
eso es realmente el cerebro detrás de la operación, y vamos a ver un ejemplo
de esto en un momento.
>> Hay un modelo que está programando código
que hace hablar a sus bases de datos, que se refiere a Yahoo Finance y similares,
y luego está la V en MVC, las vistas,
todas las cosas que está relacionado con la estética, los archivos que en realidad contienen
el código HTML, CSS tal vez tu y similares.
La idea aquí, como sugiere esta imagen, es que el controlador
es el archivo, como pronto veremos y como se verá en particular pset 7,
que el mundo habla a través de sus navegadores web.
Ese es el archivo que se visitaron en el Internet público,
pero el controlador habla potencialmente un modelo,
que es uno o más de otros archivos que contienen código relacionada con datos,
código relacionado con bases de datos y similares, y entonces se habla
el controlador de uno o más archivos de otros conocidos como puntos de vista,
que son la estética de una página web, plantillas de clases,
que podría tomar algunos datos como entrada, pero al final de la día
la única lógica dentro de una vista debe ser la representación de los datos,
iteración en un bucle y realmente escupiendo un poco de
Basado en HTML interpretación del mismo o incluso algo así como un PDF.
>> Lo bueno de MVC es que usted puede tener diferentes puntos de vista
basándose en el tipo de dispositivo, basándose en el tipo de formato de archivo que en realidad
queremos mostrar al usuario.
Echemos un vistazo a algunos ejemplos cada vez más complejos y bien diseñado
comenzando primero con la versión 0 aquí.
Déjenme seguir adelante y abrir en nuestro directorio MVC hoy
un archivo llamado index.php en el directorio de 0.
Tenga en cuenta este es un sitio muy simples y muy decepcionante
que es una especie de versión 0 de una página de inicio para CS50,
y observe cómo tenemos un enlace a conferencias, contamos con un enlace a Syllabus,
y si sigue el enlace al aviso Lectures que la dirección URL
encima de la tapa va a cambiar a lectures.php.
Si a continuación, siga el enlace a la Semana 1 aviso de que los cambios de URL a week1.php.
Parece que hay una estructura jerárquica bastante simple aquí.
>> Vamos a echar un vistazo debajo del capó como esto se presenta,
y de hecho, si miro index.php es bastante simple.
De hecho, a pesar de que se llama a este archivo PHP no hay código de programación real.
Hay un comentario que he escrito en PHP aquí sólo para que el usuario no llega a verlo.
Por supuesto, como antes, todo lo que hay entre las etiquetas PHP
se interpreta, incluso si se trata de un comentario, y para interpretar un comentario
significa simplemente tirarlo a la basura al final del día y en realidad no
enviarlo al navegador, por lo que todo aquí es sólo estética.
Si abro de manera similar lectures.php esto también es sólo un archivo codificado duro.
Le pasa a llamarse algo así. Php,
pero lo que realmente es justo. html, y week1.php, week2.php
igualmente son sólo marcado, así que hay un montón de inconvenientes de este diseño.
Uno, que es una cantidad enorme de copiar / pegar.
A pesar de que lo único que cambia entre estos archivos es la lista desordenada,
las etiquetas li, que sin embargo tienen el tipo doc, html, head,
título, el cuerpo de cierre, HTML y más
en cada archivo, lo que significa que si alguna vez quiere reestructurar
esta página web o restylize lo que tengo que entrar y cambiar
todos estos archivos manualmente o con un poco de búsqueda y reemplazo masivo.
>> Vamos a dar un paso hacia un diseño más elegante, más tiempo pensando en la versión 1 aquí
por lo que según la lectura que me lo he incluido para que pueda jugar junto con
estos más tranquilamente en casa aviso que tenemos aquí
un resumen de los archivos en la versión 1 de este sitio,
y parece que he tomado sobre mí mismo para excluir
un código común, header.php y footer.php.
Bueno, echemos un vistazo a lo que hay dentro de la primera de ellas.
Header.php parece familiar,
notar, ¿de dónde se corte?
Justo después de la línea 19, así que eso es todo lo que era común
desde el index.php archivos, lectures.php,
semana1 y week2.php del ejemplo anterior.
Lo que hice fue copiar y cortar todo lo que era común a todos los archivos,
ponerlo en un archivo de cabecera por separado y de manera similar en footer.php
se aplico el mismo principio por el que las únicas líneas interesantes
en footer.php son estos dos cuerpos, cercana y estrecha HTML.
>> Pero lo que esto significa es que en la nueva versión
de notificación index.php cuánto más simple que pueda conseguir.
Por supuesto, un poco más críptico buscando, un poco menos intuitivo
para seguir arriba a abajo, pero mi Dios, todo eso ha desaparecido ahora redundancia.
Se requiere el uso de una función de PHP llamada literalmente requerir hasta arriba,
que recuerda mucho, recuerdo, de C # include mecanismo.
Requerimos header.php en la parte superior.
Se requiere footer.php en la parte inferior, y la única cosa que es diferente
o especial acerca de este archivo es el contenido que está destinado a ser único para ella.
Pues si yo entrar en, digamos, lectures.php, el mismo principio se aplica.
Una vez más, algunos comentarios en lo alto, pero luego me exigen, requieren encabezado pie de página,
y en el medio es sólo el contenido que ha cambiado realmente.
Y si nos fijamos en la Semana 1 y Semana 2 veríamos
que el mismo principio se había aplicado allí.
Bueno, no estamos muy hecho allí.
>> Vamos a echar un vistazo a la versión 2, que tiene una estructura similar,
pero noto ahora que he introducido algo más.
En la línea 10 que he introducido helpers.php,
que aparentemente contiene funciones auxiliares.
Una función auxiliar es generalmente una función relativamente corto
que se escribe para ayudarle en varios lugares,
y vamos a ver lo que hay dentro de helpers.php.
En este caso, parece que tiene 2 funciones.
Recuerde que en el otro día con nuestro ejemplo del cubo
puede definir sus propias funciones en PHP, y lo que he hecho ahora es que he
funciones definidas por el llamado pie de página y hacer rendir cabecera,
la primera de las cuales tiene un parámetro llamado datos,
cuyo valor predeterminado es una matriz vacía, como se sugiere allí,
y que en realidad puede escribir esto aún más sucinta en la última versión de PHP
diciendo corchete abierto, cerrado corchete.
Eso significa que una matriz vacía de tamaño 0, pero sin embargo una matriz.
>> Esta función extracto es un poco especial en que
lo que hace es que toma como argumento una matriz asociativa
que tiene 0 o más pares de valores clave, y si tiene una clave de foo
y un valor de la barra de la función de extracción
crea una situación en la que ahora, a partir de la línea 11,
tiene una variable local llamada $ foo cuyo valor es bar.
Y si tuvieras más claves y valores en la matriz de datos,
Del mismo modo que se puede extraer en el ámbito local
o el nombre de espacio de modo que footer.php y
la misma idea aquí abajo para que header.php
tienen acceso a esas variables.
De hecho, vamos a abrir de nuevo header.php
y llamar la atención ahora lo que parece en esta versión.
>> En lugar de codificar duro CS50 como título para cada página
observar el dinamismo que es posible ahora.
En la línea 5 que estoy repitiendo una variable title,
pero primero me voy a pasar esa variable titulo a una función llamada htmlspecialchars.
Un nombre estúpido para una función, siempre y cuando lo es, pero lo que realmente hace lo que dice.
Se asegura de que todos los caracteres especiales
en la cadena que se pasa en los caracteres de escape HTML.
Esto es en realidad una forma de evitar algo que se llama un cross site scripting ataque
por el cual alguien puede maliciosa o accidentalmente
inyectar su propio código HTML en su sitio web
por pegar en alguna forma, por ejemplo,
algo que no se esperaba bastante, sobre todo el código JavaScript,
como vamos a hablar en una semana o dos de tiempo.
>> Esto header.php ahora, es una visión
en el sentido de que permite ver estéticamente el contenido de un conjunto de datos.
Pero más específicamente, es una plantilla.
Esta es una especie de modelo de lo que ahora queremos que el encabezamiento de cada página para que parezca,
pero hay un poco de dinamismo en la que queremos que el título que se insertan dinámicamente
sobre la base de la variable de título
que se extrae cuando llamamos, de nuevo,
la función del jefe de render.
Ahora bien, si nos fijamos en pie de render, hay realmente no sirve de mucho de eso en este momento
porque en footer.php no hay dinamismo en absoluto.
No puede ser, pero por el momento se trata de una lista codificada duro de 2 etiquetas,
pero la misma idea se aplica, de modo que en realidad sugiere por qué
hicimos perder el tiempo con una cabecera y una función render render pie de página?
Déjame ir a su lugar, ahora en la versión 3,
y en la versión 3 de ayudantes que me decidí a simplificar aún más.
>> Déjame tener una función de representación.
Déjame tener que tomar otro argumento, esta vez llamado plantilla,
que está destinado a ser el nombre de una plantilla,
y luego voy a concatenar con presunción. php al valor de esa variable,
y luego, si es que existe, o Bar.php foo.php header.php y footer.php,
entonces yo voy a seguir adelante y extraer los datos variables
y después requerir ese camino.
En otras palabras, para usar esto ahora, si abro index.php
cuenta de que yo no lo llamo encabezado rinden más.
Acabo de llamar a rendir, pero me pasa un valor de cotización de la cabecera
para dejar en claro que la plantilla que en realidad desea cargar.
>> Entonces acá cuenta de lo que estoy haciendo.
Estoy de paso en una dinámica clave del título,
un valor de CS50, y esto también, como vimos antes,
podría ser más breve en la última versión de PHP
donde puedo reemplazar la función de matriz con corchetes,
que propongo es aún más fácil de leer y, ciertamente,
un poco más fácil de escribir.
Y, por supuesto, con la llamada render pie de página en la parte inferior,
no nos preocupamos pasando un segundo argumento en absoluto, ningún conjunto asociativo,
porque no hay nada dentro de esa dinámica pie de página.
Son sólo algunas etiquetas de cierre para HTML.
Bueno, estamos dando pasos hacia realmente limpiando las cosas aquí,
pero déjame abrir dos últimos ejemplos.
Éste, número 4, observe que he tomado una decisión consciente ahora
para mejorar el ejemplo anterior finalmente utilizando alguna jerarquía para mis archivos.
>> Nótese que en este resumen, en este leerme, me he introducido
incluye un directorio y un directorio de plantillas
cuyos contenidos van a ser las cosas que desea incluir
y las plantillas que quiero hacer, respectivamente.
Esto es realmente ser yo anal y tratando de mantener las cosas ordenadas,
mantener los archivos relacionados entre sí, pero el resultado final
es que ahora tiene una configuración un poco más ordenado, pero tenemos que recordar ahora
en, por ejemplo, index.php
cuando se requiere el archivo helpers.php
tenemos que ahora lo requieran a través includes / helpers.php
en lugar de simplemente decir helpers.php porque ahora es realidad en un subdirectorio.
Ahora, en un aparte, podrás ver en estos ejemplos y algunos otros
funciones como requieren, requieren una vez.
De hecho, hay una función se llamó incluyen, y todos ellos tienen un comportamiento ligeramente diferente.
Aquí me dicen necesitar una vez para hacer súper claro que yo sólo quiero que aquellos
ayudantes incluido en mi proyecto una vez.
Pero si soy cuidadoso y si realmente estoy pensando en mi lógica correctamente
debería ser suficiente también para decir requerir hasta arriba
siempre y cuando yo mismo no querer exigir ese mismo archivo en otro lugar.
De hecho, esta es una forma ligeramente más eficiente de hacer las cosas a continuación, utilizando
exigir una vez, así que voy a recortar a sólo requieren.
>> Vamos a dar un paso más.
Este último ejemplo ahora, la versión 5, tiene una jerarquía de carpetas aún más limpio.
Note lo que he hecho aquí por la leerme en esta versión final
Ahora tengo mi directorio HTML, que he tenido todo este tiempo,
pero dentro de allí ahora es sólo lectures.php index.php,
week1.php y week2.php.
El directorio incluye ahora convive con el directorio de HTML,
por lo menos el mismo nivel como un hermano, por así decirlo.
Lo mismo sucede con la carpeta de plantillas.
El punto clave aquí es que he introducido estructura un poco más,
pero la característica principal ahora es que sólo los archivos
que necesitan estar web accesible públicamente direccionable
por una dirección URL en el Internet público están en mi directorio HTML.
>> Archivos Mientras tanto, otros, helpers.php, footer.php,
header.php, que son sin duda tal vez más sensibles,
quizás ayudantes en realidad tiene algunos nombres de usuario y contraseñas o algún intelectual
propiedad de la mina, funciona de verdad no quieren que el mundo vea, aunque accidentalmente.
Es una buena práctica para mantener fuera del directorio público de HTML
todos los archivos que no se necesitan para ser público.
Todo lo que tienes que hacer en este caso, al mirar, por ejemplo,
archivo index.php del directorio en HTML,
cuenta de que sólo tenemos que ser un poco más cuidadosos cuando se requiere
o requieren una vez este archivo.
Que tengo que hacer primero .. ir al directorio padre,
Entonces, ¿/ includes / helpers.php
para sumergirse de nuevo en obtener el archivo que me importa.
>> Cualquier pregunta entonces sobre MVC
o esta encarnación relativamente sencilla de los mismos?
Y quiero dejar claro que nos centramos un poco en el
V aquí, las vistas y el factoring fuera de estas plantillas.
No hemos realmente distingue M de C todavía.
De hecho, realmente no hay M aquí, e incluso nuestro C,
controlador, no está realmente haciendo casi nada, pero usted conseguirá mucho más
familiarizados con esos dos 2 cartas de MVC,
o mejor dicho, usted obtendrá mucho más familiarizados con la C
MVC en conjunto para el problema 7, así que hay más de eso en el horizonte.
¿Preguntas?
En realidad hay nadie aquí.
>> Bueno, vamos a pasar ahora al segundo tema y última por hoy.
Que es la introducción de una base de datos.
Hasta este punto hemos tenido algunas maneras de almacenar datos.
Hemos utilizado variables.
De vuelta en nuestro archivo de C, I / O discusión que empezamos a utilizar archivos de texto
y el uso de archivos como fprintf, y luego comenzó incluso
hablando csv un poco, valores separados por comas,
por lo que todos ellos nos ha permitido disponer de datos almacenados
o bien no persistente o persistente.
Pero incluso CSV en realidad no son propicias para la búsqueda
y la inserción y eliminación.
En realidad es un archivo de texto separado por comas estúpido
fila por fila a fila por fila, por lo que si desea
buscar ese archivo lo mejor que puedes hacer realmente es la búsqueda lineal.
Usted tiene que comenzar en la parte superior del archivo, leerlo todo en,
y buscar algún valor de interés.
Si desea insertar en ella que tiene que hacer la misma cosa,
iterar sobre ella y la inserción en un determinado lugar,
y de hecho, usted tiene que hacer toda la lógica de la búsqueda usted mismo.
>> No se puede hacer diseño inteligente correspondiente en un archivo CSV a menos que se escribe el código.
No se puede hacer la filtración de un archivo CSV
a menos que se escribe el código.
¿No sería bueno si alguien puso todo el esfuerzo
para hacer realidad la búsqueda sencilla y una fácil inserción
y eliminación y actualización y así sucesivamente?
Eso es exactamente lo que es una base de datos.
SQL, lenguaje de consulta estructurado, es otro idioma
que estamos presentando aquí hoy, pero esto también es bastante accesible,
y lo que realmente vamos a hacer es simplemente arrancar de ella algunos de los más destacados
características de manera que para pset 7, y si lo hace algo basado web,
su proyecto final, usted tiene la capacidad de expresarse
en términos de consultas de datos.
Usted tiene la capacidad de almacenar una pequeña o una gran cantidad de datos
de una manera mucho más estructurado que al final de la día
hacer su vida más fácil, porque con SQL puede expresarse
con mucha mayor precisión, mucho más metódica con el fin de
volver algún subconjunto de datos de un corpus mayor de datos.
>> Usted puede pensar en una base de datos, en este caso, una base de datos SQL, realmente como Excel
o Los números en los que es una hoja de cálculo,
o tal vez múltiples hojas de cálculo, y una hoja de cálculo, por supuesto,
tiene filas y columnas, y eso es porque
Bases de datos SQL son relacionales, relacionales, en el sentido
que almacenan los datos en términos de estas tablas,
filas y columnas.
Son de mayor rendimiento que algo así como una hoja de cálculo,
y una hoja de cálculo está destinado a ser usado por un humano.
Una base de datos está destinada a ser utilizada por el programador
escribir código en su contra, por lo que la encarnación de una base de datos
va a ser la línea de comandos.
>> Una de las bases de datos relacionales más populares que hay es, de nuevo, MySQL,
que es maravillosamente libre, rendimiento muy alto, y esto es lo
Facebook utiliza muy temprano y hasta cierto punto aún hoy
para almacenar una gran cantidad de sus datos, y nos veremos en un momento
que el uso de comandos relativamente simples
podemos seleccionar los datos, los datos de inserción, actualización de datos,
supresión de los datos y similares, pero por suerte, hay una más fácil de usar interfaz
que simplemente escribiendo en el intérprete de negro y blanco.
Usaremos para pset 7 y más allá de una herramienta gratuita llamada phpMyAdmin.
El nombre es una coincidencia.
La herramienta pasa a ser implementado en PHP,
pero eso es básicamente irrelevante.
¿Cuál es importante sobre phpMyAdmin es que es una utilidad basada en web.
Lo hemos pre-instalado en el dispositivo para usted,
y con él se pueden crear tablas en una base de datos,
puede insertar datos, eliminar datos, y véase en general
sus datos de una manera bastante fácil de usar entorno.
Los usuarios no van a utilizar phpMyAdmin.
>> Esto es realmente sólo una herramienta administrativa o desarrollador
con la que ver y hurgar sus datos y encontrar la manera de estructurarlo,
al igual que usted podría usar Excel o Numbers,
pero va a ser una gran manera de visualizar lo que está pasando debajo de la capucha
de modo que usted pueda centrarse en resolver el problema interesante y no tanto
sobre los comandos arcanos.
Echemos un vistazo a un ejemplo de los datos que puedan ser almacenados tabularly
en una base de datos relacional.
He aquí un ejemplo de ello.
Ahora, por desgracia, phpMyAdmin cometió un error en el lado de manera que lanza demasiado muchas palabras
y gráficos en usted, pero si usted acaba de afinar en la
Columna ID, la columna de nombre de usuario y la columna de hash,
esto es en realidad una hoja de cálculo, sino que pasa a ser un fragmento
de una mesa dentro del aparato
utilizando un archivo que ponemos a su disposición en conjunto de problemas 7.
>> En particular, le damos un archivo que representa
mesa de un usuario, por lo que una hoja de cálculo que contiene los usuarios con 3 columnas,
uno de los cuales es un identificador único a partir de 1 y se incrementa a partir de entonces.
La segunda columna es un nombre de usuario y aquellos de ustedes que hicieron Hacker,
la edición de Hacker para pset 2, podría reconocer algunos de estos nombres de usuario por lo menos.
Por el lado de la derecha son las contraseñas, pero no son contraseñas literales.
Son los hashes de los mismos, por lo que resulta
que el almacenamiento de contraseñas en una base de datos es una idea realmente mala.
Todos ustedes han leído probablemente en algún momento de un sitio web
base de datos o alguna empresa se vea comprometida, y entonces usted tiene que
cambiar su contraseña, usted necesita para obtener reembolsos en las cosas
porque un tipo malo en realidad se rompió en su cuenta como resultado.
>> Almacenar las contraseñas en texto claro, sin cifrar en una base de datos
es completamente estúpido, y sin embargo es muy divertido
después de leer acerca de algunas compañías muy conocidas
a veces en la prensa cuyas bases de datos están en peligro,
y esa parte no es gracioso, pero sin encriptar el hecho de que las bases de datos contienen
contraseñas es ridículo, porque, literalmente, con una línea de código
usted puede proteger contra esta amenaza en particular, y eso es lo que hemos hecho aquí.
Incluso para nuestra pequeña versión falsa Finanzas CS50
estamos encriptar contraseñas sólo por si acaso, y que el hecho de
todas estas contraseñas comenzar con $ 1 $ es sólo una convención.
Eso sólo significa que están encriptados o hash en realidad,
que es como una función de encriptación de un solo sentido
por lo cual no se puede revertir sus efectos con algo llamado MD5.
>> El hecho de que es 50 después de que significa que un valor de la sal
de 50 se utilizó para hash todas estas contraseñas a excepción de una.
Minas, por supuesto, como usted puede ver que hay, HA,
estaba usando una sal diferente, por lo que aquellos de ustedes que he disparado ligeramente hacia arriba
tal vez en Hacker 2, que podría haber sido el resultado de haber utilizado
un hash diferente a los demás, porque mi contraseña es en realidad la misma
como algún otro usuario hasta allí.
De hecho, si usted ha estado esperando todas estas semanas para averiguar
lo que las contraseñas estaban aquí eran las contraseñas que fueron impugnados
para acabar en la edición del boletín de problemas Hacker 2, así que no es demasiado difícil.
De hecho, de Malan era el mismo que jharvard,
pero si nos remontamos se veía diferente.
>> Centrarse en jharvard en carmesí, ya que fueron saladas diferente.
El algoritmo fue perturbado de manera que la
hash de valor, el valor cifrado se ve un poco diferente
porque las entradas eran ligeramente diferentes, pero la contraseña debajo del capó
seguía siendo en última instancia carmesí.
Ahora, ¿quién se preocupa por esto?
Bueno, nosotros estamos proporcionando a los usuarios de la muestra, los nombres de usuario de muestra
y los hashes de las contraseñas para que usted realmente tiene algo de
clientes para CS50 Finanzas cuando usted llega fuera de la tierra con su código.
Vas a tener que implementar más mesas en el interior de MySQL, en el interior de la base de datos.
Vas a tener que crear más hojas de cálculo, de manera efectiva, pero decidimos que dar a este un
para empezar, y verás que la especificación conjunto de problemas
le guía a través del proceso de importación de esta tabla
y también explicar cuáles son algunas de las características son,
y usted también verá que ponemos a su disposición el código
para manejar el hashing o el cifrado de estas contraseñas,
por lo que no hay que preocuparse demasiado acerca de lo MD5 o similares es realmente todo.
>> Por lo tanto, SQL, lenguaje de consulta estructurado.
Esto es, simplemente, el lenguaje que está a punto de empezar a utilizar en pset 7
y quizás más allá para solicitar datos de alguna base de datos.
Los datos son, de nuevo, almacenada tabularly en estas tablas relacionales, columnas y filas,
pero utilizando una sintaxis relativamente simple como borrar,
insertar, actualizar y seleccione podemos hacer exactamente eso.
Podemos eliminar de la base de datos, insertar,
actualizar los datos, así como seleccionar, es decir, recuperar datos de la base de datos.
¿Cómo podemos hacer esto?
Déjame ir por delante en el aparato.
Déjame levantar http://localhost,
que, de nuevo, es el aparato local en sí.
Esa es su apodo por defecto.
Y déjame ir a / phpmyadmin.
Esto pasa a ser una URL especial que el dispositivo está preconfigurado para entender
que inmediatamente me pide un nombre de usuario y contraseña.
>> Como de costumbre, voy a escribir jharvard y carmesí,
pero se dan cuenta que es la cuenta de administrador en el ordenador.
Es sólo una coincidencia que también hay una jharvard registrado para CS50 Finanzas.
Jharvard, carmesí, enter me da la interfaz de usuario que hemos visto
una idea de hace un momento, y es un poco abrumador al principio,
pero puede estar seguro, nunca vas a tener que hacer clic en la mayoría de los enlaces en esta herramienta.
Usted va a terminar con un pequeño subconjunto que es super útil,
la primera de las cuales es bases de datos hasta aquí.
Si subo a bases de datos, observe que estoy pedirá que cree una base de datos.
Esto es como crear un nuevo archivo de Excel, con eficacia.
Voy a seguir adelante y llamar a esta conferencia, y yo sólo voy a ignorar el campo allí, el cotejo.
Tiene que ver con la representación de datos en el mismo,
y yo voy a crear, haga clic en, y ahora cuenta de que me dejo llevar por crear
en el lado izquierdo donde dice sin bases de datos
Pronto debería ver la base de datos de lectura.
>> Si yo ahora haga clic en el lado izquierdo, la base de datos de conferencias,
cuenta de mis pestañas cambian un poco.
Tengo estructura, SQL, exportación, importación y algunas otras cosas.
La estructura es casi blanco.
No hay mesas se encuentran en la base de datos, como se dice aquí,
así que vamos a crear una tabla, y vamos a seguir adelante y crear una tabla
como los estudiantes, y el número de columnas que queremos?
Vamos a mantener este sencillo, y nos dejó registro de cada estudiante
un número de identificación, un nombre y una dirección de correo electrónico.
>> Vamos a mantenerlo simple como eso, así que 3 columnas, vaya.
La forma en que usted ve aquí es ahora un poco más complicado y abrumador,
pero sólo tenemos que ir a través de él fila por fila, de modo muy rápido vamos a dar
la primera columna de esta base de datos un nombre de ID para el identificador único.
Será un número entero. De hecho, me puede pasar por alto la longitud y los valores.
Un String que va a ser de 32 bits no importa lo que escriba en allí, así que vamos a dejarlo en blanco.
El valor por defecto, yo podría hacer nulo, como se define.
Voy a dejar que solo. No hay que preocuparse por los valores por defecto.
Vamos a desplazarse hacia aquí a los atributos correctos,.
Esto es interesante.
Vamos a seguir adelante y decir que algo arbitrariamente ID deben ser firmados.
No perdamos los números negativos.
>> Vamos a ir desde 0 hasta 4000000000, más o menos,
y entonces no vamos a tocar cualquiera de estos campos todavía por allí,
pero luego me deja escribir el nombre aquí abajo,
y luego el otro era el correo electrónico, por lo que la captura es el correo electrónico
y el nombre, obviamente no enteros, así que vamos a cambiar estos términos en un campo diferente.
Resulta varchar, longitud variable char,
Es como una cadena en una base de datos SQL
pero una longitud variable, y que realmente tiene que saber de antemano el
longitud máxima de la cadena, así que voy a un tanto arbitrariamente
por tipo de convenciones de 255 caracteres.
Estoy totalmente de puede decir 32. Podría decir 1.000.
De alguna manera la necesidad de decidir por sí mismo sobre la base de lo que es su demografía
el más largo el nombre del estudiante y vaya con ese número o un poco más grande,
pero lo que es bueno de un varchar es que no va a perder
255 bytes en el nombre de cada estudiante.
Si se trata de DAVID no va a utilizar en su conjunto 255 bytes,
pero eso es un límite superior, así que voy a ir con 255 sólo por convención,
pero podría debatir que para ser un valor más bajo, y por dirección de correo electrónico
sólo para ser coherente 255, pero de nuevo, podríamos tener el mismo debate.
Pero yo voy a hacer otra cosa aquí en el lado derecho.
>> ¿Qué es poderoso sobre una base de datos es que se puede hacer un montón de trabajo pesado
o el trabajo complejo para ti.
En particular, realmente no me importa lo que mi número de identificación del estudiante son.
Es sólo pretende ser un identificador único en una base de datos
así que tengo una representación concisa de 32-bit de ese estudiante
así que tengo alguna forma de identificación de forma única los
que no haya 2 Davids, por ejemplo, en una clase.
De hecho, voy a marcar esta casilla AI, incremento automático,
de modo que la base de datos MySQL, se da cuenta de
qué ID de cada estudiante recién insertado va a ser.
Ni siquiera tiene que preocuparse por que en mi código,
y yo también voy a elegir algo del menú de índice.
El índice de caer por aquí ha primario, único,
índice y texto completo.
Usted tal vez puede adivinar lo que un par de estas cosas,
pero resulta que en las bases de datos relacionales
que el programador o el administrador de base de datos para obtener preventivamente
dar pistas a la base de datos en cuanto a qué campos
en una mesa son un poco especial.
>> Por ejemplo, en este caso, yo voy a decir que el DI
va a ser un índice principal, también conocida como clave principal.
Lo que esto significa es que, por definición, en adelante ID
identificará de forma única a los estudiantes en esta tabla.
Ningún estudiante tendrá la misma identificación porque estoy imponer esta restricción o índice de esto.
Además, lo que esto va a hacer por mí es lo que va a decir
MySQL ID que es especial.
Me preocupo especialmente sobre identificación, así que adelante y hacer magia a su estructura de datos de la fantasía,
construir una especie de árbol.
Por lo general se trata de algo llamado el B-tree, cosa que no nos fijamos en semanas,
pero es otra estructura de datos similar en espíritu a los árboles binarios
y trata de que nos miramos, pero que va a decir
a la base de datos de este campo es tan importante que probablemente
Quiero ser capaz de buscar en él, seguir adelante y construir un poco de fantasía
estructura de datos en la memoria para agilizar las búsquedas de modo que idealmente
son la constante de tiempo o por lo menos lo más cerca posible a la que
de modo que no delegar en búsqueda lineal, que no va a ser
el más alto rendimiento enfoque.
Por el contrario, la dirección de correo electrónico podría haber sido una clave principal.
>> En teoría, la dirección de correo electrónico de cada uno es único, a menos que usted está compartiendo un poco de consideración,
pero no es generalmente buena para usar algo como una cadena
como clave principal, porque si su propósito en la vida es la identificación exclusiva
filas de la tabla no hay ninguna razón para utilizar al máximo 255 bytes
para identificar a alguien si usted puede conseguir lejos con sólo 4 bytes
o un int de 32-bit.
En general, una clave principal debe ser corto y conciso
y lo ideal sería algo así como un número entero o un int grande, que pasa a ser de 64 bits.
Sin embargo, una dirección de correo electrónico debe ser único, y una de las características de una base de datos muy
es para exigir la exclusividad para mí.
Al seleccionar único aquí junto al correo electrónico, a pesar de sí mismo por correo electrónico
se desplaza fuera de la pantalla, lo que digo a la base de datos
no confía en mí.
No me dejes insertar en la base de datos
la misma dirección dos veces, aunque yo soy un idiota y no soy
muy bien con mis ifs e IFS otro lugar y el código PHP real
y accidentalmente deja que el usuario se registra en una dirección de correo electrónico existente
la base de datos es otro nivel de defensa para la corrección
para garantizar que esa dirección de correo electrónico duplicados no acabe en la mesa.
>> Ahora, por el contrario, para el nombre es probable que no quieren hacer ese único
porque entonces no podría ser de 2 o 2 Davids Mike Smith, por ejemplo,
en su base de datos, de modo que uno sólo tendremos que dejarlo solo.
Voy a seguir adelante y haga clic en Guardar en la parte inferior derecha,
y todo se ve bien, pero note aquí
esta es una parte que por ahora no va a pasar mucho tiempo en
porque la sintaxis es un poco complejo, y no es necesario crear tablas
muy a menudo, pero el propio SQL es un lenguaje,
la sintaxis que está aquí que he resaltado.
¿Qué phpMyAdmin realmente hace es que crea una interfaz gráfica de usuario basada en la web para usted
con la que se puede ahorrar tiempo y no tener que escribir manualmente fuera
una consulta SQL bastante largo así.
>> En otras palabras, si desea crear manualmente esta tabla,
ya sea en ese phpMyAdmin en blanco y negro del sistema o incluso en
mediante el uso de esta otra pestaña, esta pestaña SQL donde puede escribir en cualquiera de las consultas SQL
que desea, francamente, esto me habría llevado un minuto
para recordar en realidad la sintaxis completa, e incluso entonces probablemente sería
hizo algunos errores tipográficos, por lo que esta herramienta es muy útil para cosas como esas, y es también instructivo.
Usted puede comenzar a inferir lo que la sintaxis es
sólo por el color bonito de codificación que phpMyAdmin es la adición de
para nuestra comodidad visual.
Pero ahora vamos a hacer esto en su lugar.
Déjame ir a la pestaña Insertar en la parte superior, y déjame seguir adelante e introducir, por ejemplo,
una identificación de, digamos, la verdad es que no me importa.
Va a incremento automático. Voy a dejar que la base de datos de acuerdo con esto.
Pero voy a ser David, y mi correo electrónico debe ser malan@harvard.edu.
>> Vamos a seguir adelante y poner aquí en Mike Smith como otro.
Me voy a dar un apellido a su vez,
y habremos él sea smith@example.com,
y entonces, ¿dónde puedo ir ahora?
Bueno, parece que va es el botón para hacer clic, y listo.
Observe en las 2 primeras filas insertadas.
Esta es la actual consulta SQL.
Esa es la herramienta phpMyAdmin ejecutado por mí,
pero el resultado final, aviso, si ahora vamos a la pestaña de navegación,
es ver dos filas en esta tabla, recuerda mucho estéticamente
de la tabla que vimos anteriormente para nuestros usuarios de pset 7,
uno de ellos es David Malan, uno de los cuales ahora es Mike Smith.
Pero para ser claros, no es necesario utilizar phpMyAdmin,
y, de hecho, va a ser pronto la escritura de código para pset 7
que automatiza el proceso de agregar filas, eliminación de filas, la actualización de filas y similares,
así que déjame en lugar de ir a la pestaña SQL aquí
y escriba select * from donde los estudiantes
email = "malan@harvard.edu".
>> En otras palabras, supongamos que ahora tiene
algún tipo HTML, y el usuario teclea su dirección de correo electrónico, entre otros campos,
y el objetivo ahora es en el código PHP en parte trasera
mirar realmente hasta otros detalles de ese usuario.
¿Cuál es su nombre completo? ¿Cuál es su número de identificación?
Se puede escribir una consulta SQL como esto, select * from estudiantes
donde el correo electrónico = "malan@harvard.edu".
Y si yo haga clic en GO, nota que yo, y de hecho lo hacen, volver una sola fila.
Mike se omite de este conjunto de resultados, como la colección de filas
que generalmente se llama, porque él no tiene la misma dirección de email que yo.
>> Ahora, de nuevo, aquí para pset 7 vamos a usar phpMyAdmin como herramienta administrativa
y una herramienta pedagógica para aprender su manera
en todo el mundo de SQL, pero al final de la día
usted va a estar escribiendo estas consultas dentro del actual código PHP,
y así que estad atentos en Zamyla tutorial en particular,
donde obtendrá un recorrido por el código de distribución de este boletín de problemas
donde nos hemos dado no sólo la estética de la página de inicio de sesión
y el bonito logo sexy que dice CS50 Finanzas, pero también hemos dado
un montón de funciones que harán de su vida un poco más fácil.
También hemos escrito parte del conjunto de procesadores para usted,
la porción de entrada del mismo, en particular, para darle un sentido de un diseño representativo
que utiliza realmente un controlador, por ejemplo, index.php,
login.php y similares, y entonces podrás ver el conjunto de procesadores también tiene un directorio de plantillas
que tiene todos sus puntos de vista, todas las estéticas.
Y así, el flujo de trabajo general en pset 7 va a ser que
los usuarios visitan un controlador a través de una URL en un navegador.
Ese controlador contiene código PHP que usted escribió, y dentro de su código PHP
podrían ser algunas líneas de SQL anidado entre comillas dobles
y se pasa a una función que escribimos consulta denominado
que le ayudará a hablar con la base de datos sin necesidad de utilizar algo como
una herramienta administrativa como phpMyAdmin.
>> Usted será capaz de escribir sentencias SQL en código PHP
y recuperar una matriz de PHP del conjunto de resultados,
de las filas que en realidad responden a esa consulta.
Y del mismo modo va a ser capaz de hacer inserciones o eliminaciones
o actualizaciones o similares, la sintaxis para lo cual es bastante similar,
y verás algunas de las referencias en línea, desde el código de distribución
y desde el mismo conjunto de procesadores empacar exactamente cómo hacer para hacer eso.
Darse cuenta de que realmente estamos en última instancia, sólo arañando la superficie de SQL
y de MySQL, pero el poder de la verdad es que te libera
para centrarse en los problemas que desea resolver, los casos de uso que desea implementar
sin tener que preocuparse absolutamente tanto, al menos al principio,
acerca de dónde y cómo almacenar y buscar en su base de datos,
y esto es literalmente el mismo Facebook, donde tiene su inicio
usando MySQL y utilizando más servidores MySQL y luego más servidores MySQL
en poco tiempo, hasta que tuvo que empezar a pensar realmente duro acerca de cómo
almacenan los datos, la forma de almacenar las cosas aún más eficiente,
así que, aunque vamos a dar por sentado el hecho de que los índices y restricciones únicos
y así sucesivamente sólo el trabajo hay una conversación muy interesante
que todo esto puede eventualmente conducir a, así que darse cuenta de que sólo estamos arañando la superficie
de lo que podría llegar para usted o sus proyectos sean un poco de datos grandes.
>> Dicho esto, vamos a terminar aquí, y nos vemos la próxima semana.
[CS50.TV]