>> [音楽再生]
デイビット·J·マラン：すべての権利。
お帰りなさい。
これはCS50です。
これは8週目の終わりです。
そして、あなたが知っているように、私たちはかなり持っている いくつかの通常営業時間
食堂の、 アネンバーグ含む。
そしてチームのいくつかの親切 最近いくつかの写真を撮りました。
とに敬意を表して ハロウィーン、我々はしようと思いました
むしろによって私達を捕まえたものを共有する ここアネンバーグホールで驚きばかり
他の夜。
あなたの同級生ヤコブはのためにポーズ この写真が、より面白かった
Facebook上だった、その後の その後起こった会話。
>> 応答での彼の最初のポス​​ト 彼の写真にこれがあった。
数分後、彼が決めた これで自身最大1。
それは、これに行き、その後を続いた その後、さらにおかしく
彼のお母さんがで相づちを打ったときである。
その後、最終的には、 これはちょうどだったようだ
のための素晴らしい策略 それが起こっているのプレー。
>> ですから、ご希望の場合は ジェイコブと他人を見るために、
だその中でシンシア·メング、 CS50ゾーンスタッフの舞台裏、
このURLと、ここでこの劇に向かう。
だから、前置きなしに、今日の私たち Webプログラミングでこの外観を続ける、
プログラムの実際の作成 それは、あなたのコマンドラインで実行されません
その代わりにブラウザ内で実行。
>> おそらく今、または非常に まもなく、あなたが行っている
実装の真っ只中にあると ユーザー独自のWebサーバー、どの
Webプログラミングとは異なる。
pset6におけるWebサーバはすべてに約ある 取る方法を知っているソフトウェアを書く
ブラウザからのHTTPリクエスト、 あるいはあなたから、ヒト、
Telnetを呼ばれるプログラムであり、 その後どちらかそれらの要求に応える
HTMLファイルを吐き出すことによって、またはA JPEG、またはGIF、あるいは.phpのファイル。
>> しかし、Webサーバーと、そうではありません 単にPHPファイルを開くことになって、
.phpので終わるもの、および その後中身を吐き出す。
それが行うことになっています まずそのファイルに何？
いわば。
それをコンパイルしない、我々は月曜日に言った、 しかしrather--だから、それを解釈する。
>> PHPはインタープリタ言語だし、そう あなたのWeb​​の主な機能の1
サーバー、私達によって実装さにもかかわらず、 Webサーバーのためのこの能力である
ああ、気づくために。
これが.phpので終わるファイルです。
私はちょうどに送っないようにしましょう それのようなユーザーは、静的なコンテンツだ
むしろ私は行ずつそれを読んでみましょう 行は、左から右に、それを解釈する。
>> そして実行するには、その 人は本質的になります
アプライアンス内のプログラムにパント、 コンピュータシステムの多くに、
ちょうどPHPを呼んだ。
それは、PHPの名前です 言語自身のインタプリタ。
だから、その部分私達はのために実装する あなた、そして何のために残っている、
最終的に、数である 作品の、その中で
支援を実施しています 静的コンテンツの。
>> しかし、今、そして付き 問題は、あなたがしている、7を設定
への移行を開始するつもり 実際にPHPコードを書く
それが解釈されます バックエンドに話す
情報を格納するデータベース。
それでは、より良い最初に理解してみましょう これらのスーパーグローバルのカップル
そして、どれだけ電力使用 自由のための箱から抜け出す
PHPのような言語を持つ。
あなたが持っていないもの 自分で実装する。
>> そこで、我々は、月曜日$ _GETで見た スーパーグローバルこれは、
これだけグローバルのためのPHP話すさ あなたはどこにでもアクセスできる変数。
と$ _GETの内側に何ですか？
これの内側に何 私たちが見るスーパーグローバル？
確かに統計的にで 少なくとも1人は知っている。
$ _GETの内側に何ですか？
うん？
>> 聴衆：それは変数だ あなたは、クエリ文字列に置く。
>> デイビット·J·マラン：パーフェクト。
それは、変数あなたです クエリ文字列に入れて。
だから、私たちの古い例では、 我々が持っていた時にGoogleに再実装
URL、およびその後疑問符、 これは、HTTPの開始を画定
パラメータは、我々は同等のQを持っていた Qのようなものは、猫に等しく、
自動的に内部の何を行くだろう あなたのためのスーパーグローバル$ _GETことの、
PHPのため、Qの鍵となります や猫のその値の。
>> 言い換えると、$ _GETのとの全てにおいて これらの事は連想配列であり、
一種のハッシュテーブル、その キーと値を格納します。
さて、バックpset5で、ハッシュ 表あなたが実装しているかもしれないが、
またはあなたかもしれない試し 本当に、実装しました
効果的に連想た アレイは、データ構造
それによってあなたが関連付けることができます 値を持つキー。
>> しかしpset5で、値が些細であった。
値は、本質的にtrueまたはfalseだった。
辞書内の単語はありますか？
それで、あなたはリンゴのような単語をハッシュ化されたとき リンゴが辞書にあるかどうかを確認するために、
あなたのチェック機能恐らく trueまたはfalseを返しました。
だから、それが効果的だ 我々は戻って取得している値。
>> しかし、我々は月曜日に見た 簡単に言えば、あなたは確かにすることができ
もっと面白い関連付ける ちょうどtrueまたはfalse以外の値
リンゴのようなキーを持つ。
あなたが実際に返すことができます 任意の文字列、そして実際に、
それは何$ _GETだと、これらの 他の変数はあなたがやらせる。
>> だから、$ _POSTは、精神において似ている しかし、あなたがポストを経由してフォームを送信した場合、
の異なるHTTPメソッド クレジットカードのようなもののために使用、
さらには個人情報、および 写真のようなバイナリ情報、
それらのものは、$ _POSTの内側に終わる。
実際にファイルの JPEG画像やその他もろもろのように、
さえないという別のあります ここまでだけでなく、$ _FILESと呼ばれる。
>> だから、サーバー我々はあまりにも上に住むことはありません 多くが、それはあなたのアクセスを提供します
約下位レベルの詳細をソートする あなたが使用しているサーバ自体。
クッキーとセッション、しかし、 我々は効果的になりました表示されます。
最後は、私たちが実装するために使用するものです ショッピングカートの概念。
超簡単1、しかしリコール 私たちがここでこの例を持っていた、
あなたは何回を数える 前にこのページを訪問した。
>> しかし、今日、ちょうど見てではなく、 この効果は、のアップ開いてみましょう
Chromeのインスペクタ、 その普段でき
右クリックまたはControlでやる Webページ上の任意の場所をクリックすると、
その後要素を検査します。
それとも、メニューを行くことができます 我々はpset6の仕様で記述していること。
と私は、[ネットワーク]タブに行くよ ここで、との一瞬のために見てみましょう
のHTTPトラフィック 行き来。
>> 私が最初に先に行こう とChromeのキャッシュをクリアします。
だから、あなたのいくつかは見覚えがあるかもしれません すでにこの技術では、
そして我々はそれを使用するつもりだ ここで、デバッグのために。
今、私たちは、コンピュータとしての 科学者は、開始しようとしている
デバッグのためにこれをやって 目的、それによって
我々は、キャッシュがクリアされ、 一般的に、その私たち
クッキーと呼ばれるものを取り除くことができます。
だから、あなたはおそらく、一般的に慣れている クッキーが何であるかと、あるいは少なくとも
彼らは存在しますが、何だということ それらのご理解、
ちょうどユーザーとして コンピュータ、クッキーとは何でしょうか？
うん。
>> 聴衆：それは、うまく少しof--ではありません コンピュータサイエンスの任期内のビット。
これは、データの一部のこと ウェブサイトは、順番にあなたに送る
あなたに統計を記録することができるように。
デイビット·J·マラン：OK、良い。
だから、データの一部ですその サーバは、お使いのコンピュータ上に置き、
とのも、それを一般化しましょう より多くの、それはvalue--うまくキーですが、
それは、より正確ななってきた。
それはの作品です 情報、データの一部、
サーバができること お使いのコンピュータを置くために
と非常に多くの場合、サーバが行います これは、あなたが誰であるかを覚えておくようにする。
だから、例えば、オッズ あなたはおそらくしているされている
Facebookのようなサイトにログインし、 やGmail、または他のものの前に
そして、あなたの使ってログイン ユーザー名とパスワード、
その後その後、いくつかの数の 分または時間あるいは数日の、
サーバがあることを覚えている あなたは、実際には、ログインした。
さて、どのように実際に起こっている？
あなたは確かに再入力していないので あなたのユーザー名とパスワード毎回
あなたがに移動 Facebook上の別のページ。
だから、判明 クッキーは答えです。
>> あなたのように考えることができ、クッキー、 のような一種の、デジタルハンド
あなたがアミューズメントで得るかもしれないスタンプ 公園や本質クラブ
あなたがここにいたことを示し 前、あなたはすでにしました
のために、用心棒にあなたのIDを示す インスタンス、およびそのクラブや公園
今あなたと仮定するべき すでに認証している。
あなたはすでにそれによって同定されている。
>> このことを念頭に置いて持つので、 それでは、ここでカウンターを開いてみましょう。
私はちょうどでしたが、私は先に行ってみよう、 そして、私のクッキーをすべてオフにします。
そして今、私がやろうとしているものさ ちょうど良い対策のため、Shiftキーを押し、
と強制的にページをリロードしてください。
念のシフト その何もキャッシュされませんされます。
そして、ここで要求だ それは前後に行きました。
だからここの上に、私たちは要求を持っている、としましょう 私はここまでズームインし、このたくさんの
のための面白くない細部の一種である 今、ブラウザが自動的に持っていること
送ったが、それでは表示]をクリックしてみましょう 生のヘッダを参照するには、ソース。
>> そして、あなたはすでにpset6に飛び込んだ場合には、 あなたは確かに物事を認識します
このような、そしておそらくいくつかの ここにこれらの他のライン、
しかし、今日のためにもっと面白いものだ 私は下にスクロールした場合、しない要求へ
しかし、いわゆる応答、 この行はおそらくお馴染みに見えます。
それは良いことだ あなたは、200 OKを見たとき。
どうやらこれは サーバー上の日付と時刻
そして原料の束があります。
ああ、これは面白いです。
>> あなたが使用するたびに判明 少なくともこのサーバーでは、PHP、
サーバーは何を出してくれる あなたが使っているPHPのバージョン。
セキュリティのために実際にいる、 目的は、良いことではありません。
しかし、我々はそれに戻ってくる おそらくいくつかの他の時間。
しかし、今、これは今日のジューシー線であり、 そして我々は、簡単にこれらのいくつかを見ました
私たちが突いたとき、私はFacebookと思う 当時のインスペクタの周りに、
設定されたCookieを植えているものです 情報の小さな作品
お使いのコンピュータ上に。
>> これはHTTPヘッダである それが効果的だ
お使いのブラウザを伝える、 Chromeは、IE、何でも、
ユーザーの上でちょっとブラウザ店 ハードドライブ、またはユーザーのRAMに、
あるPHPSESSIDと呼ばれるキー、 セッションIDのための簡単​​な表記法、
それに値を与える 0vlk8t、ドット、ドット、ドット。
本当に長い擬似 ランダム英数字の文字列。
それはちょうど本当に大きな数ですが、 それは、文字と数字でエンコードされただ
そのサイズができるように 単独の数字よりもさらに大きくなる。
そして、ところで、PATH = /、その ちょうどこのクッキーがなければならないことを意味
に関連付けられている ウェブサイトの全体、
だけではなく、特定の ページ全体のこと。
だから、これはその仮想手のスタンプです。
これは、サーバーかのようにFacebookの、 あるいは我々の場合アプライアンスでは、
文字通り0vlk8tを書きました など、あなたの手に。
、どのようなサーバのことに注意してください やっていないそうではありませんです
確かに、自分のユーザー名を保存する 私のパスワードを格納していない。
>> 代わりに、であるように思われる 擬似ランダム情報を格納する
誰も推測できないように 私の手スタンプは何ですか。
サーバー側では、 一方、サーバ
おそらく、覚えてしようとしている データベースか何かで、
ユーザー、将来的にその 0vlk8tのハンドスタンプ、ドットを提示し、
ドット、ドットは、これに関連付けられている必要が 特定のショッピングカート、いわば。
言い換えれば、私は今行けば ここに戻って、このページをリロードし、
サーバーは、どのように知っているん 私は1時間を訪れたこと？
>> 私は再びそれを行うかどうか、どのようにサーバーを行います 私はそれを2回訪問したことを知っていますか？
さて、私はこれにダウンした場合 最新のリクエスト、どの
私が送信したことを、今第三である 合計で、今私の要求に気づく。
これはまだある ここで、同じアップ要求
以前のように、全体の束はまだあります 我々は以前のように無視してきたものの、
しかし非常に最後のヘッダ、この 時間、私は前にここにいたので、
のプレゼンテーションです この仮想ハンドスタンプ。
>> ここでこの行は、Cookieを設定しないことにより、 しかし、クッキーコロンPHPSESSI = 0vlk8t、
それはちょうど私のブラウザの自動です この手のスタンプを提示するように
これで、サーバー、それが実現するとすぐとして、 ああ、これは、ユーザ0vlk8tドット、ドット、ドットである
私は今、彼または彼女が誰であるかを覚えています そして、そのユーザーに再会合何でも
情報は私はしたい、とのすべて その情報は、必要によって保存することができる
$ _SESSIONでプログラマー、。
>> 私は実際に素早く開くのであれば、明確にする geditの中で、その実際のファイル、counter.php、
私の地元のホスト公開ディレクトリ内 以前のように、確かに、ことに気付く、
私は最終的に内に格納してい $ _SESSION引用引用終わり "カウンター"
以前のカウンタの値いる 私はここで我々、これらのラインから取得
前回プラスワンを見た。
だから、ボンネットの下に、 それは、すべてのクッキーがあるのです。
それはデジタルのちょうど一種だ ハンドスタンプは、行き来
と率直に言ってあなたがChromeのを開いた場合 任意のウェブサイト上のインスペクタ
あなたは、今日訪問 超高確率で、
あなたは、おそらくいずれかを参照するつもりだ 多分半ダースのクッキー
あなたが覚えてされている。
>> そしてさらに悪いことに、それらの場合 ウェブサイトあなたが訪問している
そのすべてが、広告を持っている 確かに今日は非常に一般的です、
それらの広告は来ている場合は、 いくつかの中央党、誰かから
Googleやアドワーズ広告など、彼ら 自社製品のいずれかを呼び出す
または他のそのようなベンダーはその 、面白いもの、広告を売る
と率直にちょっと何 気になる、HTTPがどのように機能するかについての、
あなたが持っている場合、広告が埋め込まれたということです Facebook.com、およびGoogle.comで、
そしてHarvard.edu、任意の数 ウェブサイトのため、そのようだ
提供している真ん中の男があること それらのウェブサイトのすべての3つの広告まで、
それがあることが判明 クッキーは、ドメインあたりの金額です。
>> だから、あなたがから来る広告を持っている場合 別のウェブサイト上で同じ会社、
その会社は、効果的に誰を追跡することができます あなたはそれらのウェブサイトのすべてにわたっている。
ハーバード大学は知らないかもしれない あなたは、Facebookを訪問している。
Facebookは知らないかもしれないと あなたはハーバードを訪問している。
しかし、どのような広告サービス そのドメインがある場合、それらは使用している
Harvard.eduウェブの両方に存在する ページやFacebook.comのWebページ、
この真ん中の男は確かにあなたが誰であるかを知っている なぜならこれらのクッキーが共有されているの
全体で、というより、へ その仲介いわゆる。
>> だから我々は、このに戻ってくるだろう そのセキュリティへの影響、
しかし、多くの情報があります いつでもあなたについて保存されます
上のほとんどの任意のWebページにアクセスしてください 本当にインターネットとそれ
この非常に簡単な仕組みに帰着する。
何があれば、その後、どうなる あなたはスーパー妄想だ
そしてあなたはクロームまたはIEに行くことに決める または何とクッキーをオフにする？
何が起こるか？
うん？
あなたはこの権利をやったreally--？
[OK]をクリックします。
いいえ、先に行く。
>> 読者：特定のウェブサイトが持っていない Facebookのようなことのない関数。
デイビット·J·マラン：うん！
だから、特定のウェブサイト ただ動作を停止します。
そしてほとんどのウェブサイトでは、これらの日 それは基本的に、クッキーに依存している
彼らはあなたがログインしている場合は特に で、彼らはちょうど破るつもりだ。
検討するため、 代替、もしウェブサイト
あなたが誰であるか覚えの方法がありません、 したがって、Webブラウザではありません
すべてのHTTPで表す この手のスタンプの要求、
効果的にウェブサイト Facebookの行くようなもの
にプロンプ​​トを表示する必要があるとし すべてのくそ時間にログイン
あなたがページを変更したり、リンクをクリックして、その 確かに特に良いユーザーではありません
経験。
>> だからそこには、あまりにも、である トレードオフの中で。
だから、前置きなしに、それではいきましょう Webプログラミングであることを付与されたため、
PHPのような言語で、あなたは覚えています 問題のあるセット内のそのような情報
あなたがあなた自身を実装7 購入するとイー·トレードのようなウェブサイト
そしてあなたは正確に覚えているだろう、株式を売る 何、ユーザが購入し、販売している
そして彼または彼女が誰であるか このセッションを経由して。
しかし、我々は必要になるだろう 電子メールよりも手の込んだやり方
周りの情報を保持開始します。
右？
>> 月曜日に、私たちは1年生のIMについて話しました とどのようにバージョンそのウェブサイトのいずれかで、
数年前、我々が行ったすべてだった だプロクターを電子メールで送信
学内のスポーツ担当 プログラム、名前、性別、
彼らはキャプテンだか否かにかかわらず、 そして誰かの寮
学内スポーツのために登録する。
だから、悪くはないが、その後、彼または彼女 彼らの電子メールを介してトロールしなければならなかった、
スプレッドシートか何かなどを作る それは、組織化のすべてを維持する。
だから、きっと私たちのプログラマーとして その試験監督のためにこれを行うことができます。
だからSQLで入力し、 構造化照会言語、
かなり見に行くされている CとPHPの両方に異なる、
あなたが上でずっと手を潜るよ PHPと問題が、また7が、SQLを設定
またはSQL、これはその言語で あなたがデータベースに話をするために使用する。
>> しかし、データベースは何ですか？
さてあなたは考える データベースは、少なくとも今のところ、
ただ、Excelファイルのようなものと、または あなたは、Macユーザa番号ファイルなら、
またはあなたがGoogle Appsのなら ユーザーはGoogleスプレッドシート、
それは本当に効果的にデータベースの、または 特にリレーショナルデータベース。
リレーショナルデータベースはちょうどです 行と列を持っているもの、
、あなたは、任意の種類を格納することができ これらの行または列内の情報。
>> しかし、SQLのいいものだと 約実際のデータベースだけではなく、
スプレッドシートやGoogleスプレッドシート、 あなたが言語を使用できることです
実際にクエリを実行する データを削除し、データを挿入、
でも、データを探すために 最も重要なこと、そしてあなた
かなり手動でそれを使用する必要はありません あなたはGoogleの一般的かもしれませんが
このようなスプレッドシート。
>> だから、SQLで、の束があります 基本的な文や作品
機能性に建てられた。
これらよりも多くのがあります、 しかし、あなたは、巨大な距離を移動することができます
ちょうどそれを知ることにより と呼ばれるこの言語
SQLは、少なくとも4つを有する あなたが活用することができますステートメント。
>> データを削除するために、削除、 行を追加するため、挿入し、
変更するためのアップデート、 行、および選択、
行を取り戻すためにと それは確かに、SQLが何をするかだ。
それはとても行に完全に動作します ときに、挿入、または削除、その
または更新、またはあなたがしているものを選択 いわゆる結果セットとして戻ってき、
行の配列などがある。
表からの行の束。
>> だから、戻って一日で、 でもこの日に、
あなたがと対話することができます コマンドラインを使用して、データベース、
それは使用することが特に楽しいではありません この黒と白のスタイルウィンドウ
そして、実際にコマンドを実行 そして、データベース周り突く。
グラフィカル·ユーザー·インターフェース、またはGUI、 、間違いなく、はるか望ましい
そして私たちはお勧めのツールと アプライアンスにあなたのためにプリインストールされている
phpMyAdminに呼ばれています。
それは、その合計偶然だ この事の名前は、その中にPHPを持つ
それだけで人々を意味し 誰が彼ら自身をこのプログラムを書いた
PHPでそれを書いた。
>> しかし、それは治療について、最終的です MySQLサーバのようなデータベースサーバ、
あなたが持つかもしれないことを、あなたと CS50アプライアンスで、やる。
だから、詳細はここよりもあります 今日は気にする必要があります、
しかし何の鍵なのは左のそれである 手側はデータベースのリストです
あなたがお使いのコンピュータ上に持っ​​ている、 あなたのCS50アプライアンス上で、
またはあなたがかもしれない、最終的なプロジェクトを来る 第三者、同社に与える
そのWebサイトまたはWebサーバー、 あなたは宇宙のために払っている可能性があります。
だから、左側にあり データベースの一
私は次のから借りpset7です 週のpset、次に上
そこだそこに気づく タブ、一つの束
データベース、SQL、ステータスがあり、 などのユーザー、エクスポートと。
だから、長いを行くことができます やり方だけで実現することにより
そのユーザインタフェースの最も 左上の欄にある
そして上部のすぐそこまで。
だから我々は実際にこれで何ができるのでしょうか？
さて、作成を開始してみましょう 情報のビットは次のように。
>> 以下のような場合であると仮定し、 わずか数日になりますように、
あなたが実装したい CS50 Financeというウェブサイト、
このウェブサイトはあなたが買うことができます 引用終わり引用や株式を売却。
そして、それは把握するだろう これらの株式の価格は、
最終的にあなたが表示されますよう、 ヤフーファイナンスに話すことによって。
これ、素晴らしく、無料のサービスを提供しています あなたは株式相場に渡すことができる
GoogleにとってGOOG、それ好きになるでしょう Googleの現在の株価をあなたにお返し
過去の中価格 数分少なくとも。
>> だから、最終的には、それを使用します ユーザのためにふりをする
実際に購入し、販売する 仮想マネーを使って株式、
しかし、非常に最初の事 ユーザーが見ることになるだろう
それらを尋ねる、このログイン画面がある ユーザー名とパスワードのため。
だから、最初の1 pset7でのあなたのための課題
バックエンドを実装することになるだろう データベース、スプレッドシートあなたがする場合は、
それは保存するために起こっている ユーザー名とパスワード
そして最終的に彼らが所有する株式、および どのように多くの、そしてどのくらいの現金彼らが持っている、
ので、他の物事の束で 他のテーブル、またはスプレッドシート。
>> それでは、どのようにこれを見てみましょう 一見表示されることがあります。
私は戻って行くつもりです 私は、アプライアンス
ここで次のURLを参照してくださいつもり phpMyAdminにはlocalhost / phpmyadminの
そしてあなたはそのことが表示されます インターフェイスに私を取る
私たちは上を見ているとおりに スクリーンショット、ここで私
追加のデータベースを持っている 今日の講演会と呼ばれる
と私は先に行きましょう 第一及びpset7をクリックしてください。
>> 私はオプションのカップルを持っているようだ、 新しいテーブルを作成するための新しいのための1、
ユーザーへとリンク、どの 私はすでに作成されたテーブルです。
だから、テーブルは何ですか？
ですから、Excelを使用した場合 前、あなたがしている場合
使用した数値やGoogle スプレッドシートは、ウィンドウを開く
あなたが全体の束を取得 行と列の、
しかし、あなたは、通常のワークシートを持っている 一番下、または個別のタブに沿って。
あなたはそれぞれの考えることができます テーブルとしてワークシート
その結果、データベースは、最終的には、aは 一つ以上のテーブルを組み合わせ、ある
以上のワークシート、中 通常のスプレッドシートの世界。
だから私は先に行くとしましょう このワークシートをクリックしてください
私は既成のことを、と呼ばれるユーザーは、別名、
データベーステーブル。
そして、私はここに下にスクロールした場合、 私は少しズームアウトしましょう​​、
これはphpMyAdminは語っているものです 私たちは今、この表の中にある。
それは、最初は少し混乱だ 一目UIはありませんので、
世界で最も美しい物ですが 興味深いのは、ここではこの部分である。
ID、ユーザー名、ハッシュ。
>> 事前に、あなたは左利きだろう これは問題では7を設定し、
私たちはあなたにスーパーを含むファイルを与える 実際に借りた小さなデータベーステーブル、
ハッカー版から の問題は、2つのセット
その内部に6行があります。
すべてのベリンダの一つ ウェイダウンZamylaためのものと、
それらの左側に気付く ユーザー名は、1のようなユニークなIDである
二つ、三つ、四つ、五つ、六つ、整数、 その後右にハッシュがある。
>> オッズである、場合、あなたはしませんでした ハッカー版の問題は、二つセット
しかし、ハッシュは暗号化されただけのようです いくつかの注意点とパスワードを入力します。
だから、あなたはここで何を参照してください。 すべての6つの暗号化されたバージョン
問題から私たちのパスワードを 2のハッカーエディションを設定してください。
今すぐ左にはいくつかのGUIのものである、 、この行を編集し、この行をコピーし、
この行を削除する。
>> しかし、何が面白い 今以下の通りである。
私は実際に開始することができます このテーブルを使って実験。
だから私は行くとSQLをクリックした場合 タブは、私がこの大きなテキストボックスを取得します。
そして、これは私たちがしようとしている方法ではありません 実際にコードを書くときにそれを行う。
明確にする、phpMyAdminの だだけのツールです
私たちはデータベース周り突くようにするつもり そして私たちは、クエリを試してみましょう。
>> だから、例えば、仮定し 私は正確にこれを実行します。
それらの一つである、選択 私は前述したキーワード、スター、
すべて表している テーブル内の列。
何テーブルから？
さて、ユーザーは。
そして、これがあると気づく SQLでの奇妙な慣習
どこにあなたが実際に使用 バックは、典型的には、マダニ
ていない単一引用符ではなく二重引用符 あなたは、テーブル名について話すとき、
そう、バッククォートは上のものです 最もキーボードの左上
そう。
>> だから私は今先に行きましょう そしてちょうどその一人で残す
そして下にスクロールし、[Go]をクリックし、我々はしている 実際に同じものを見に行く。
私達はちょうどSQLクエリを実行した 選択すべてのスターを言って
からテーブルは、ユーザと呼ばれ、 何を取り戻すことはこれです。
最終的に、私たちのことができるようになります コー​​ド内で同じことを行う、
しかし、今、すべてのために私はしたかった 私のブラウザでそれを見ることだったん。
さて者が何かをやらせる 少し違う。
私はSQL]タブに戻りましょう、 そしてちょうど何としましょう​​？
Zamylaは彼女のすべてを失ってしまった お金、したがって、それはだ
私たちはユーザーとして彼女を削除するための時間。
彼女はもはや、ログインんだ。
>> だから私はfrom--削除と言うつもりです よく、大文字を維持
一貫性を保つために、削除 ここでユーザーから。
だから、我々はこれらを持つことができます 述語、またはこれら
私の文の末尾に修飾子、 どこで、どのように私はZamylaを削除できますか？
彼女の名前Zamylaことで、そう 列、列の1
名前なので、ここで名前= "Zamyla"した。
そして、ここで私は、二重使用 引用符または一重引用符、
あなただけのバック時にチックに使用 たとえば、名前の話、
テーブルやフィールドの。
そして、私はここに移動]をクリックしてみましょう。
そして今、ウェブページがある 少し緊張している。
>> または、あなたは本当に、削除、実行したいです 名前はZamylaに等しいユーザーから？
はい。
だから今、私たちは私のテーブルに戻る場合は、 クリックするユーザーが、フムことに気づく。
私はgoofed。
そして実際に、私は一種の とても速く離れてクリックする
あなたも見ていない おそらく赤いエラーメッセージ、。
私は間違って何をした？
読者：あなたが必要としなかった 彼女の名前を大文字にする。
デイビット·J·マラン：うん、私 彼女の名前を大文字に、
しかし、彼女は私が実際にusername-- 右、カップルミスを作ったのですか？
一つは、彼女のユーザ名です zamyla、小文字のZ、
列名は、ユーザ名であり、 名前ではなく、それでは、再びこれをやらせる。
私は先に行こうと ユーザーがどこから削除
ユーザー名は、引用引用終わり "Zamyla」に等しい。
すべての権利？
だから、これは少し良く見えます、しましょう 私は下にスクロール行くし、Goをクリックします。
それはまだに起こっている 確かに私に叫ぶ。
私は[はい]をクリックし、そして今、我々はを参照してください、 率直に言って、これは本当に起こった
1未満、高速 第二確かに、この
正確に実行されてしまったクエリです。
確認するために、私は、ユーザーをクリックしてみましょう そして実際に、今Zamylaがなくなっています。
今度は、反対のことをやらせる。
ゲイブがしたいと仮定し ウェブサイトに登録する。
何、SQLクエリの周辺情報 私はゲイブを追加するために入力することができますコマンド？
まあそれはかなり簡単です。
今のユーザーに挿入し、 それは少し不可解な取得します。
私は、サーバーに、指定する必要があり、 私が割り当てたいフィールド。
私は本当に何ゲイブのIDを気にしない 数があるので、私はそれをスキップするつもりです。
私が代わりに言うつもりです ユーザー名、ハッシュ、およびその後
値は、私が入れたい ゲイブがあるように起こっている。
その後、彼のハッシュが、私は知らない。
だから今、私はするつもりだ 行うことが大きなとしてそのままにしておきます。
我々は戻って来る 問題セット内のその
あなたが実際にそれを行う方法として、スペック。
>> だから、もう一度、構文に気づく。
テーブル名に、[挿入] フィールドの括弧でリスト、
あなたが追加したい列 ちょうどその値に、そして
左からまったく同じ順序 あなたが追加したい値の右側に、
そしてそれは理由だけで包んだ テキストは少し長いです。
だから今私は、[移動]をクリックしてみましょう。
一つの行が挿入される。
そして今、私は戻っへ行けば ユーザーは、何が面白い
唯一のゲイブは、今ではないということです データベースには、明らかに彼のIDが何ですか？
>> まあそれは7です。
なぜそれが私はそれを追加しなかった7されたとき？
このように、あまりにも、の一つである あなたは、データベースの取得機能を備えています。
の多くは、機能が組み込まれています。
それは時と判明 この表を作成し、
私はそれが自動的に事前設定だ このようにIDを割り当てる
それがインクリメントこと。
だから、あなたは今までの周りつついてしまった場合、 そしてどのような自分のFacebookのIDを見て
番号は、それは本当にありませんこれらの日です 行うための物ですが、APIとしてのFacebook、
アプリケーション·プログラミング·インタフェース、 あなたが取り戻すことができる
に関するデータの全体の束 あなた自身、あなたの友人約、
そして、あなたの接続。
そして、何が親切にするために使用 クールの、背中日に、
ルックアップするために何であったか、あなたを FacebookのID番号があった。
Mark Zuckerbergはの、 例えば、3個である
彼はサイトの作者だったので。
物語が進むにつれて、彼が作成 2テストアカウント、ユーザーは1と2、
その彼はその後、削除された。
そしてそう、などのザックは、彼のユーザー名です Facebook上で、ID番号3である、
そして私たちのすべては、はるかに数字を持っている 3これらの日よりも大きい。
実際には、いくつかの点で Facebookは遠ざけ
偶数整数を使用するから、その 32ビットの値が使用することに、ある
次のステップアップ、 本質的に長い長いので、
彼らは収容できること さらに多くのユーザーが登録する。
だから、楽しい小さな歴史的な事実。
>> だから、それはただだ との基本的な構文
私達はのカップルを実行するかもしれません クエリが、我々は実際にできます
SQLでたくさんより多くのことを行う。
そして、あなたは、最終的には、表示されます 問題に7を設定
あなたが作るために持っていること 設計上の決定の数、
それらの間になるだろう どのようなデータ型を使用します。
だから、Cのように、データが存在する データベース内の型、MySQLのような、
あなたが選択する必要がとデータ型 からは、ここで、これらのフィールドが含まれています。
CHAR、VARCHAR、INT、大きなint型、小数 日付、時間、および多くの他。
それでは、実際にこれを実行してみましょう。
のは、我々はしなかったことをふりをしましょう 手あなたこのユーザーの表
とのために、私が先に行くと、作成してみましょう 私自身、講義中database--
実際に私が先に行くと、削除させて 私はすでにここに持っているテーブル
ように、我々は実際にこれを作成することができます。
おっと。
私はこれをドロップするつもりです テーブル、そして今私は
再び行くつもり こっち講義データベース、
私はテーブルを作成するつもりです ユーザーは呼ばれてみましょう
ちょうど3つの列を行う 最初に、[Go]をクリックします。
>> さて、ほとんどの部分は、 再び、これはただである
と呼ばれるこのグラフィカルツールを使用して phpMyAdminは、私たちは今何をやっている
テーブルを作成しています。
だから、これはファイル、新規を行くようなものである、 そして新しいExcelファイルを作成する。
だから、それは私にいくつかを尋ねるだ 質問は、よりは、左から右へ
最初の列の名前は何ですか、 第2列の、名前、
そして第三の名前。
それでは、これを再作成してみましょう。
ID、その後、ユーザー名は、一つであった その後ハッシュは別だった。
だから、どのようなデータ型はすべき IDのようフィールドのために今も？
>> ここではデータタイプのリスト全体は データベースで使用できる、
そして今のところちょうどint型で行きましょう。
32ビット値、私はしないでください 私は現実的に考える
40億以上のものを持っているつもり アカウント内のユーザー、私のサービスで、
私は動かし続けるつもりだ 次の質問に上。
私が指定するつもりはない 長さや値、
それが適用されないだ ここではint型のため、それ自体が。
そして今、私が指定することができ、 どうやら、デフォルト
私が指定するつもりはない値。
照合は、私はそれが何であるかを知らない。
属性。
今、私たちは実際に行う 設計上の決定を持っている。
だからここにいくつかのフィールドではなく、すべてがあります そのうちの該当するが、符号なしである
ただ何を意味？
intはしなければならない？
ちょうど非負。
だから、アップ時に0にする必要があります。
いいえ、私は理由をチェックするつもりはない 私は、すべてのユーザーがIDを持っているしたい、
それがnullにすることはできません。
その後、私たちはいくつかのより多くを取得 このような興味深い設計上の決定。
私たちは、その瞬間にこれに戻ってくるだろう しかし、どのようなデータベースの別の特徴
、であるあなたが言うことができるということです データベースサーバは、先に行く
そしてあなたの、あなた自身を最適化 RAMとハードディスクの容量、
つまり、選択し、挿入など 削除、更新は本当に速いです。
pset5とは対照的。
>> あなたが何かを見ていた場合 あなたのハッシュテーブル内の、どの
あなたは、データベースとして考える すべてしなければならなかった人
あなたのハッシュテーブルは、高速作るために働く。
それは、明らかに、好きだ。
右？
あなたはすべての時間の罰金に入れていた ハッシュ関数を得ること、物事を調整する
右、方法を考え出す 持っているために多くのバケット。
>> しかし、再び、素敵なものだ、 データベースについてです
あなただけのすべてをパント この他の人に
誰がこれを考えている 何のための貫通し、
私は下にここに言うつもりです インデックスは、その私のIDフィールドです
の主な方法になるだろう このデータベース内のユーザーを識別する。
私が考えるつもりはない ZamylaとしてZamylaの、
私が考えるつもりだ 6番としての彼女。
>> なぜそれが、おそらく、より良いです 直感的に考えることとモデル
使用して、個々の行のそれぞれ 代わりに何かの数
Zamylaのような文字列のような ゲイブまたはまだ長い文字列や？
うん？
>> 読者：IDはユニークです？
デイビット·J·マランは：もう一度言う？
読者：IDはユニークです？
デイビット·J·マラン：ID ユニークですが、suppose--
一般的にはケースとして ユーザ名と、仮定し
私も一つだけが存在し得ると述べ 世界でZamyla、そして唯一のゲイブ。
私は、一意性を課すことができ 私がしたい場合も、文字列の制約。
だから、悪くない考え。
>> 読者：より安全。
>> デイビット·J·マラン：より安全な、なぜですか？
読者：あなたが言うことができない ユーザのように、これは。
デイビット·J·マラン：OK、あなた これをユーザーに伝えることはできません
これはとてもあります それへのプライバシーの側面、
特に多分IDがあれば URLの中に現れる。
だから、必ず、それはあまりにも仕事の種類、可能性があります。
他の考え？
うん？
>> 聴衆：それはに簡単です int型の操作を実行します。
デイビット·J·マラン：それは本当のキッカーだ。
それはちょうど、より効率的ですが、 またはコンピュータのためのより容易に、
整数に対する操作を実行します。
右？
int型が保証され Zamylaのに対し、32ビットであること
、ガブリエル数文字の長さである さらにいくつかの文字は、長さで
ダベンポートは本当に長いです、ので、それはだ 使用することが特に効率的ではない
値を比較して見て、文字列 フィールドは、更新フィールドについて、
あなたは離れて得ることができるかどうか ただひとつの整数である。
ちょうど32ビット。
ユーザー名そのため、あまりにも、このように、 一意である必要はありませんが、
彼らはおそらく必要がありますが あまりにも、さらにこのようにしてあること
ユーザーがに許可することができた 彼または彼女のユーザ名を変更してください。
>> それでは、今のように、このままましょう ユーザを識別するための主な手段。
これは、データベースを語っている 先に行くと、自分自身を最適化する
そう、ID上のルックアップは、超高速です。
AI、恐ろしくだけ、という 自動インクリメントは意味、
これはチェックです 我々はチェックする必要があるボックス
へのIDフィールドことを指定する 自動的に私のために更新され、
その後、私はするつもりだ ここで右にスクロール
と率直に言って私は本当に興味がない これらのフィールドのいずれかよりで。
確かに今日は。
>> だから私はここに戻って行くつもりです、 最初の列に
私は、ユーザー名を指定する必要があります ハッシュ、およびしてみましょう
上の少なくとも焦点 今のところ第1。
int型は、おそらく右のコールではない、 だから何がおそらくより理にかなっている？
>> 聴衆：テキスト。
デイビット·J·マランは：もう一度言う？
聴衆：テキスト。
デイビット·J·マラン：テキスト？
[OK]を、私は、テキストを聞いた。
他には？
私たちは、種類の選択肢の束を持っている 自然の中でテキスト形式であること。
だから、いつ、なぜ、やる あなたはこれらのいくつかを使うのか？
あなたがかもしれないとは逆に、char型だけでなく と思い、単一の文字ではありません。
それは、特定の文字数です。
だから我々はすべてのユーザー名がわかっている場合 8文字のようにする必要があり、
古いに共通して使用される コンピュータシステムは、私は、charを言うことができる
その後私はここ8を言うことができます。
3列目になったときです 表の作成時に該当する。
>> しかし、それは迷惑なのようなものだ 一部の人々は可能性があるため、
長いユーザー名を持ちたい 8文字より、
一部の人々はしたいかもしれません 短いユーザー名を持っている、
なぜ自分自身をコミット 特定の数に？
変数を持っていないのはなぜ 文字の数だけ
名前の最大の長さと言う ですが、私は64文字のように、知らない。
私は友人を考えることができない人 64文字より長い名前を持って、
それは短すぎるだ場合でも、あなたは可能性 確かに任意にそれをバンプ。
>> だから、varchar型は可変である 文字の数。
テキストが悪い本能ではなく、 率直にその種のそれが言うん、
しかし、テキストフ​​ィールドとすることができる 少なくとも65000バイトなどである。
それはのためにおそらく行き過ぎだ フィールド、および実際には、うん、65535。
それはのためにおそらく行き過ぎだ 名前を付けて、私たちは一般的に、固執するだろう、
テキスト形式のためのVARCHARと あまりにもフィールドとハッシュ、。
ハッシュ、結局のところ、私たちは何ができる varchar型だけでなく、またはそのような何か、
しかし、我々は今日の焦点を合わせることはありません そこに暗号や数字
私たちは実際に可能性があること その長さのために使いたい。
>> しかし、私は、右にスクロールダウンしてみましょう。
あなたは一つだけを持つことができます テーブルのプライマリインデックス、
しかし、私はこれらのいずれかを適用したいか、 今、ユーザ名に、あなたは言うでしょうか？
何が曖昧に基づいてユーザー名必要があります これらの4つのオプションの理解？
ちょうど彼らの名前で？
>> 聴衆：ユニーク。
>> デイビット·J·マラン：だからユニークな、右？
だから、可能性だけでなく、ことが判明 あなたは、事前に、データベースに伝える
これが主な方法である フィールドを識別する。
また、これは言うことができます 一意のフィールドになるだろう。
それがあることを行っていない 私は頼るもの、
私は、データベースを希望 本質的にそのように、その場合の条件を持っている
私が今までに登録しようとした場合に 同じ名前を持つ2人のユーザー、
データベース平らに 私をさせるつもりはありません。
私はいくつかの追加のコードを持っているかもしれません 限り防ぎPHPで、
ただし、データベースは、あまりにも、確保することができます それが起こるだろうことはないでしょうことを。
>> さて、余談ですが、特にできるだけ あなたは、最終的なプロジェクトを考え、
心のそれインデックスとフルに保つ テキストは、実際には非常に便利です。
あなたが大規模なデータベースを持っている場合は、しないと 何十、しかし、数百または数千を持つ
フィールドのまたは百万も、することができます また、事前にデータベースを伝える
これは私が行くよフィールドです ロットで検索する。
たぶん、そのユーザー名、 あなたはなら多分それは、バイオの
Facebookのようなウェブサイトを作ること ユーザーの許可が段落を持って
あなたがしたい場合は、保存、およびする 事前にデータベースを伝える
私は、このフィールドで検索するつもりだ 多くが、それは必ずしも一意ではないですが、
あなたは私のインデックスを作成指定することができます。
または、あなたも言う頂きできるようにすることができます コマンドのように、任意の検索のソート
あなたのような、またはコントロールF、 ワードプロセッサでかもしれない、
だから、任意の文字列を見ることができる あるいはこの分野での列。
言い換えれば、我々は取得している 学期中でポイントに
あなたが心配する必要はありませんどこに 効率的に物事を実装する方法。
あなただけのについて知っておくべきこと あなたがしているように、設計上の決定は作る
のための適切なツールを使用して 機能を利用するためには貿易
他の人があなたのために構築したもの。
だから要約するには、プライマリのみべき 、1を持って、あなただけの1を持つことができます
そしてそれはあなたがコミットしていることだ 一意のフィールドを識別するために使用して。
ユニークな精神でちょうど似ていますが、 あなたがたまにしかそれを使用する場合があり、
しかし、あなたは、データベースがそれを課すことをしたい。
インデックスはちょうど先制意味 将来的に物事をスピードアップ
私は、を検索できるように この分野での事。
その後全文はのために、一般的である 段落、またはエッセイ、または大規模な団体
テキストのどこに また、持っているしたい場合があります
星の同等のようなワイルドカード。
右。
>> だから、この種のだった 一度にすべてのことがたくさん。
我々は蒸留できない場合を見てみましょう これらの機能のカップル
その後、何かを構築 かなり単純な、しかしパワフル。
他の中でそう 設計上の決定君がいる
最終的に一緒に持っているされているだろう ストレージエンジンのライン。
そして、私はちょうどこのの言及を作ってみよう 最終的なプロジェクトを見越して、
レッツのと期待 say--なしはこのやろう。
それでは、この小さなを構築しましょう 最初のアプリケーション。
私は自分の端子に行くつもりです 窓、ここではではありません
私たちは今つもりcounter.phpのみ としてもはやゲルマンを取り除くために、
しかし、我々は全体の束を持っている ディレクトリとその
心の中で非常によく似たことになるだろう あなたは問題が表示されますものに7を設定します。
>> だから我々は3つのディレクトリを持っている 、公共およびテンプレートが含まれている
ある場所を正確に私たちがオフに左 私たちの全体のMVCパラダイムと月曜日。
と要約に、公共の場で行くつもりされている 私は、ユーザーが実際にしたい任意のファイル
V IN訪問することができる URLを経由して自分のブラウザ。
テンプレート。
私たちは、テンプレートには何を入れたのですか？
スタッフはどのような？
ありませんでしたが、あまりのカップル 月曜日には、少なくともファイル。
うん。
>> 読者：ヘッダーとフッター？
>> デイビット·J·マラン：ヘッダーとフッター。
だから我々はあまりにも、今日同じような何かを持っている。
私たちは、さらにいくつかのファイルを持っているが、 フッター私は、私が見るヘッダを参照してください
その後他のファイルの束。
だから、これは同等です V MVCビューの、その、
もう一度、もう少しなります 問題の明確なは7を設定し、
しかし、これは私はただのフォルダです 私の美学をたくさん入れて。
私のHTML、私のフォームの多くがたくさん。
一方、別のある、含み これらの3つのファイルを持つディレクトリ
との、これらを簡単に見てみましょう。
>> 私が先に行くつもりです とのconfig.phpを開く。
それははるかに、結局のところ 長期的に以前のように、
あなたは鋭い含ま pset7とCS50ドット時間。
今日の例では、つもりだ その同等のものを行うには
必要とwith文 その効果
これらのいくつかの行が含まれています。
だから、明確にする、これは config.phpに呼ばれるファイル。
そして、それはやっているのかに気づく。
それは明らかに何かをやっている 不可解なエラーメッセージをオンにする
あなたがブラウザでそれらを見ることができるように。
それは明らかに、その後、だ 2他のファイルを必要とする
これは、C言語での#includeのようなものです その後、我々は見たこの1、
そして私たちが頼ってきた、これがオンになり 機能性のようなそのショッピングカート。
>> これはクッキーの意志を意味し 前後に送ること。
では、なぜこれが面白いのですか？
さて、私たちはこれに戻ってしまったら 例えば、ディレクトリと開く、
constance.php。
PHPがサポート定数をしていることに注意してください、 それは、Cでかなりの#defineのようではありません
代わりに、文字通り 定義されていると言う、と予告
私は、予め記憶されたこと このファイル内の4つの定数。
今日のデータベースの一つ、 自分のパスワード、自分のユーザー名のために、
そしてサーバーの名前。
したがって、これらは実際にあることを行っている 問題ではかなり似ては7に設定してください。
そして最後に、これは私はどこにある いくつかの素晴らしい機能を取得するつもり
のfunctions.phpでスタッフから、 私たちが書いたコードの束である、
そして私はこのの一部を盗んだ 7を設定し、問題から
今日のために、それは物事の束を行います そしてちょうどそれらのいずれかを見てみましょう
特に。
ここではこの機能は、 クエリは、になるだろう
我々は呼んでPHPの関数 SQLを実行するために。
先ほど私たちが使用していた phpMyAdminは、それはちょうどだ
学習目的の並べ替えのために および診断目的
およびデータベースのセットを忘れて。
あなたが実際にあなたを使用する場合 データベースに、ヒト、
明らかつもりはありません ウェブを引き上げるべき
ページたびに誰かが登録します。
あなたは、そのコードを記述するつもりだ 挿入およびオンデマンドでユーザーを削除し、
そして我々はこれをやろうとしている クエリ機能を経由して。
私は今、下にスクロールした場合、あります さらにいくつかの機能になるだろう。
リダイレクトはしようとしている 私たちが書いた関数であること
あなたのためにそれはあなたがすることができます 別のURLにユーザーを送信する、
レンダリングはかなりのように、機能である 私たちは実際にレンダリングすることを、月曜日に見た
これらの上のテンプレートが、より多くの スルーpset7自身の散歩の形。
今のところ、先に進み、これをやらせる。
>> 私は私の講義テーブルに行こうと 現在、何もないことがわかり
ここではまだ、と私も行かせ 私のパブリックディレクトリ内へ
1つのファイル、index.phpのがあります。
このファイルには、超簡単であるように思われる 現時点では、それだけでこのようになります。
非常にどのように我々のような 月曜日に中断。
私は、このファイルを必要としています にあるconfig.phpを、
これは、ディレクトリが含まれて 私の両親は、ドットドットである、
そしてそれはちょうどこのファイルをレンダリングだ。
だから、このファイルは何ですか？
>> 私のテンプレートで開くしてみましょう 指定すれ、我々はこれを表示されます。
、どうやらこのフォームは超簡単です $ _GETまたは$ _POSTにより提出する予定。
クイック健全性チェック。
文字通り、視覚的にファイルを検索します。
この方法は、ポストに等しい。
だから、同じように、URLを使用することはないだろう Googleはそれが非表示の並べ替えになるだろう、い
背後にある情報 シーンとそれがだ
に提出する予定 register.phpと呼ばれるファイル、
それは、ファイルの 我々はまだ書かれていない
しかし、これは何が起こっているか 見えるようにすることはこれです。
>> 私は別のページに行けばこれがある 何のlocalhost / index.phpのは次のようになります。
そして再び、サーバの ただのindex.phpを仮定。
入力してください。
我々はどこだからです で、そして私がやってみたい
物事を入力することが可能である デビッドのような、その後
私の電話番号、と言うだろう 今のところ617-555-1212、登録
そして今register.phpが見つかりませんでした。
だから私はこれを実装する必要があります。
それでは、素早く鞭ましょう このアップのようなもの。
私のパブリックディレクトリに行こう そしてregister.phpのgeditの操作を行い、
そして今、私が先に行くつもりだと 私たちは月曜日に行ったように、PHPモードを開始し、
そしてPHPのタグを閉じ、 それでは物事のカップルをやらせる。
>> だから1、私は知っているから、 そのフォームを書いた、
私は、次の点を確認したいこと。
それが空である場合、どのようなユーザー その後、名前フィールドに入力された中で
私が何かを言うつもりです のような名前が欠落してお詫び申し上げます。
一方、ある、謝罪 PHPの事にして成らず、
それは我々が書いた機能だ pset7ためのfunctions.phpで
あなたはそれへのアクセス権を持つように。
他の分野であれば、他の 空、番号で、その後私は
に謝罪に行く 欠番をユーザと言う。
このファイルを保存します。
>> それでは、私のブラウザに戻ってみましょう、 もう一度やり直して戻っフォーラムへ行く。
登録します。
[OK]をクリックします。
何も良いです、起こらなかった。
私は、エラーメッセージを取得できませんでした。
代わりなら、それではこれをリロードしてみましょう ページではなく、何を提供しています。
ふざけんなよ。
それを行う。
登録します。
私は間違って何をした？
空の場合は、$ _POST名。
もう一度言う？
>> ああ、もちろん。
私は、最も重要な部分を忘れてしまっている （ "../ / config.phpに含まれています。」）を必要としている。
私はへのアクセス権を持っている必要があります 関数を謝罪、どの
何が起こってなかった理由である。
この関数は実際には存在しない。
それでは、もう一度これを試してみましょう。
のページをリロードしましょう​​、[登録]をクリックします。
[OK]をクリックします。
そこである。
我々はしているので、出力 ここに見ることは結果であり、
謝罪呼び出す 機能、超簡単、
そしてそれだけで何をプリントアウト 私はそれを引数として与える。
>> すべての権利、それでは、協力しましょう​​。
それでは私の名前を提供してみましょう デビッドのように、登録し、
欠番OKレッツ あまりにも、それを提供しています。
617-555-1212。
登録します。
[OK]をクリックします。
だから、すべてが、現在ではただ何もありません 興味深いのは、何が起こっている。
だから今のはもっと何かを作ってみよう 興味深いのは、次のように起こる。
私はphpMyAdminのに行こう、としてみましょう 実際には、ユーザーと呼ばれるテーブルを作成します
私はそれを3を与えるつもりだ カラム、私はすぐによ
その後、IDを作成し、 名前を付けて、その後数、
そして私はIDフィールドを intとして残すつもり。
私は行くよ名前フィールド varchar型として残すために、
そして我々はやや任意に、64を言うよ。
私は行くよ数 作るために、あなたは何を知っていますか？
私たちは、になるだろう ここでは米国の番号をサポート、
ので、私は何かをするつもりだ charとその後10文字のような
市外局番マックス その後7桁。
その後こっち、私はするつもりだ 、自動インクリメントは、このフィールドを指定する
このプライマリキーを作成し、 私は先としない行くつもりです
これらの他のボックスのいずれかをご確認ください。
>> だから私は今ようやく保存]をクリックしたときに、 と私は、私のユーザーテーブルに戻る
これは私であればどのように見えるかです 今新しいタブ構造をクリックします。
だから、これは、明確にするために、 ちょうどphpMyAdminのの方法です
データベーステーブルを言っての ID、名前、番号が
それらの特定の構成で そして、我々は残りのフィールドを無視します
そこに今のところ。
>> だから今、私は何をすべきかをしたいですか？
だから私は、私の中に今行けば ソースコードは、すべてが順調であれば
私は、次のクエリを実行したい。
に挿入し、私はちょうどことができます ユーザーは、私は厳密にないと言う
それはだ場合には、これらのバックティック必要 ユーザーは好きじゃない危険な言葉。
私は名前を言うつもりです、 数、その後ここに私は
ハードコーディングするつもりはありません まだ値の桁。
私は2つの疑問符を置くつもりです。
そして、これは慣習です 多くの言語で
それによってあなたが持っているしたい場合は、 文字列のプレースホルダ
あなたが質問を使用するつもりだ マーク、理由のために私たちはよ
約チャットに戻ってくる ここでセキュリティ、
私はそれらを渡すつもりだ 2つのフィールドは、名前を投稿し、
その後、数を投稿 そして今、ファイルを保存します。
>> そして今、私はするつもりだ ここでダウンして行くスーパーで
単に、これrendersuccess.phpを言う 別のテンプレートになるだろう。
私は本当に速い作成するつもりです。
Geditsuccess.phpと私は行くよ そのファイル内のH1の成功を言うこと。
わかりました。
だから今、のに戻ってみましょう 私が前に訪問したブラウザ、。
それでは先に行くと、私が書いた確認しましょう デイヴィッドに、私は電話番号に書いた、
登録してください。
ふざけんなよ。
私は間違って何をした？
だから私は、ここにエラーを見ている あなたのSQL構文でエラーが発生している。
てみましょう、私は戻ってgeditのにジャンプしてみましょう 私は、register.phpに戻る
と私は何をすることを省略した 最後の時間が重要でしたか？
私はこれを必要としています。
あなたがからよりも、他を知りたい 前気づいたが、私はこれを必要とした。
>> だから今のは戻りましょう、そしてこの ブラウザで見ることになりました
それはなぜconfig.phpの中だ 我々は、エラーを吐き出す。
それでは先に行くと、リロードしましょう​​、 [続行]をクリックし、成功。
だから今私の所へ行くみましょう ここにデータベースおよびユーザーをクリックして、
と参照し、今私に気づく ここに私のデータベースにデビッドを持っている。
今、技術的には、このウェブサイトがある まだ公共のインターネット上で、
私は他のを持つことができません ここに置くの人々、
しかし、私は今のところ、したい場合 インスタンスは、自分自身にテキストメッセージを送信。
それではここに手足に出て行ってみよう これは実際に動作するかどうかを確認します。
私が先に行くつもりです この行を削除
そして我々はこれをぼかします 後でビデオで出
私たちは持っていない インターネット全体が私をテキストメッセージ、
そして私たちは今まで行く ブラウザと私たちは講義に引き継が行くよ
そして我々は、異なる入力します ここ数、登録、成功。
>> だから今、私自身の番号がでおそらくだ データベース、そして今楽しい部分。
それでは実際に行うためにPHPを使用してみましょう 何かプログラムで、
いずれかのコマンドから ラインまたは他のどこかから、
そして今の私はちょうどよ それをシンプルに維持するつもり
と私は私に行くつもりです ここで、ディレクトリとは、次の操作を行う。
Geditのスクリプトは、我々はよ、の言わせて 、テキスト、＃！/ユーザーは/ bin / envをPHPで呼び出す
私たちは最後の時間を見たような。
PHP。
>> 今、私が必要とするつもりです config.phpのを含み、
これでもかもしれませんが 若干の誤差を誘発する。
そして今、私が先に行くと言うつもりです 行、クエリ、ユーザーからのセレクトスター、
そして今ここで私はテクニックをするつもりです 行として各行の最後の時間から。
そして、私は、単純な何かをするつもりです。
printfの者の名前がこれです言​​わせて、 その数は、この、バックスラッシュnである。
そして今、私は渡すつもりだ 行に、引用終わり名前を引用
そして行は、引用終わり番号をお伝え そして今度は、先に行こう
と私のターミナルウィンドウ chmodのこのA + xが作る
このスクリプトは、テキストの実行可能ファイルと呼ばれる。
そして今のテキストを実行してみましょう。
>> [OK]を、そう進行。
だから私は今書いたA コマンドラインスクリプト、
PHPと呼ばれる言語では、その、 そのため、ラインを必要とする
これらすべての構成へのアクセス権を持っている 私は指定された定数。
データベースなどの名前。
実際には、単に明確にする これはまぐれではないことを、
私が先に行くと登録してみましょう、 ロブのような他の本当に速い、誰か
そして彼に555-1212番号を与える。
>> そして今、私は、スクリプトを実行する場合 もう一度、電源を気づく
我々は、データベースとやっているの。
今、私はすぐに何を見てきました 他の2行は、私のデータベース内にある。
だから今のは何かをしてみましょう の内側であっても手の込んだ、
そしてこれは、私たちがした部分である 事前にテストされていません、
そう最後の時間は、私はこれをしなかった 物事が恐ろしくゆがんで行きました、
我々は、その旨をビデオを持っている。
>> 実際に、ええ、面白いさておき。
前回だから、中 2年前のように講義、
我々はであるためには、私が決​​めた、決めた すべてこれは素晴らしいアイデアだろう
動的で電子メールを生成する データベース全体のCS50を使用して、クラス、
私たちにその番号を与えていた学生、 そして、その携帯電話のキャリアがこれを使用
PSET0から思い出すかもしれません、 それは結局のところ、推論する方法
私は私のプログラムではマイナーなバグを持っていたし、 2012年に夫婦ミスをした、私は思います。
>> それによって、私はループそのために持っていた1 事のちょうどこの種でしたが、
データベースを反復、 データベースから名前を得て、
データベースから名前を付け、その後それぞれに そのループの繰り返しは、私がメールを送った。
しかし、その代わりに1電子メールを送信するのは、私 1メール最初の反復を送った、
二つの電子メール送信された2回目の反復、 3電子メール2回目の反復、どの
あなたは私たちから思い出すかもしれませんように 漸近記法についての議論
nの二乗のような悪いのこの大きなO、 私が送っどのように多くのメッセージである、
しかしそれも電子メールではありませんでした それはテキストメッセージであった。
>> あなたが知っているようにと、出席ではありません 最後の学期に向けて超高
そして私はそれがでかわいいだろうと思った 言う時間は、「なぜクラスではないですか？」
テキストメッセージ内のI クラス全体に送られ、
そしてそれはの50％を好きに面白かった クラスが、他の50％、人の一部
びびる、私は信じられないほど送ら 申し訳なさそうに甘いノート
スタッフが謝罪へ 単に講義を逃した
この回、右？
>> だから、恐ろしくゆがんでしょう。
その精神でそれでは、これを試してみましょう 再びしかし、ちょうど私の番号を持つ。
事前に、のfunctions.phpで、 私はここで、この関数を書きました。
これは、テキストと呼ばれ、それだ 三つの引数に取ります。
番号、キャリア、およびメッセージ。
>> 私は、switchステートメントを使用しているよ 素晴らしくPHPテイク文字列だけではなく、
整数は、と私は実装していませんでした まだ、このためのすべてのサポート、
私はちょうど、AT＆TとVerizonやった。
それが判明したので これらのキャリアを持つこと
彼らは、SMSゲートウェイに電子メールを持っている それによってあなたが実際にすることができ
アドレスに電子メールを送る vtext.comでの電話番号のような
ユーザがブロックされていない場合 メッセージは、それが通過するよ
テキストメッセージである。
>> 今、これを行うには、私が追加する必要がありますするつもりだ 私のデータベースに本当に速いつのフィールド。
私は入るつもりです 私の構造、と私は確信
先に行くと、追加しよう テーブルの最後にフィールド。
それではGo]をクリックしてみましょう、と私は確信 このキャリアを呼ぶつもり
そして今のところ、私はするつもりだ バーのテキストとしてこれを残して、
しかし、我々は将来的に手の込んだことができます。
私はすぐに行くつもりです 私のテーブルに、と私は確信
ロブを取り除くために行く、 それは偽の番号だから、
私はここで編集に入るつもりだと私は確信 手動で私のキャリアを変更するつもり
ベライゾンであるためには、それ 、そして今ここに超えている。
>> それでは迅速な健全性チェックをやってみましょう。
これ、私たちのテキストスクリプトを開いてみましょう このようになり、キャリアは％sです。
私たちは、より多くのエラーをやっている 私は、2012年にキャリアをやったよりもチェック。
そして今、私は行くつもりです 先行して、スクリプトを再実行してください。
[OK]をクリックします。
キャリアは意味ベライゾン、ある 今うまくいけば私はちょうどこれを行うことができます。
正しく今年、 うまくいけば、ここに私達は行く。
>> だから、このforループの内側に、私は今 これはprintfを持っているだけでなく、予定、
私はまた、テキストを呼び出すつもりだと この関数はリコールの利用
だったそれは、番号を受け取る キャリア、およびメッセージ。
それでは見てみましょう、数がしようとしている 「番号」列引用引用終わりであること
行引用引用終わり「キャリア」、 そして最後のものはメッセージだった。
今年セミコロンを台無ししないでください。
>> [OK]をクリックします。
指が交差した。
これが動作するかどうか見てみましょう。
そう、すべての権利。
ここに私達は行く。
それでは電話のロックを解除しましょう​​、 あなたの指を交差、畜生。
未定義の変数may--ああ 待って、待って、待って、本当に速い。
本当に速い、本当に速い。
これは完全に価値がある。
おっと、私はつかむせて、私はつかむましょう。
テキストが持っている、あなたに感謝 他の誰かから始まった。
私が先に行くと本物の開きましょう ここでは、高速、dropbox.php /メール。
スタンバイ。
それは全く価値があります。
ダウンロード。
[OK]を、ソースsrc8m。
[OK]をクリックします。
>> ここにもう1行が必要です。
ああそこにそれは1年生でだ、である IMS、それは3時にレジスタにあります。
こんにちはああ、マーゴは、どうもありがとうございました。
[OK]を、私はここに、この行を欠落していました。
だから私はすぐにつかむましょう このコード行、
これは、メールまたはライブラリが含まれています 私が実際に使用したいことを、
私はすぐに行くよ 関数に戻って、
私はこの上に行くつもりです ファイルと同様に、このファイルを必要とし、
そして今私は本当に私を横断するつもりです 私は、コマンドに戻って指
の内側にあるラインスクリプト、 今日のローカルホストのディレクトリ。
テキストを実行します。
入力してください。
メール。
スタンバイ。
メール。
[OK]を、ああ。
ここに私達は行く。
>> メールは、新しいPHPメーラーを取得します。
私はこの権利を行うのですか？
ふざけんなよ。
待って、待って、待って、ああTo--。
スタンバイ。
私は、これは、お約束 それとても価値があることを行って。
アドレス。
私はしないでください理由です 右のクラスの前の例。
うわ。
次の受信者に失敗しました。
それでは最後に一つを試してみましょう。
から設定したSMTPアドレスを追加し、 アドレスが確かにあることである。
のアドレスで、この最後の部分を試してみましょう。
おやおや、私は今、本当に悲しいよ。
ありがとう。
しかし、私は本当にすべてに感謝 テキストはあなたが送ってきた。
あなたはこのデビッドを持っている。
あなたはそれを吹いている。
それではそこにそれを残してみましょうと、 我々は月曜日に修正します。
その後、あなたを参照してください。
>> DAVENファーナム：そして今、ディープ Davenファーナムによって思考。
バイナリツリーは、森の中にある場合と、 誰も周りのC it-- [笑い]にはありません。