「ピーエイチピー」と読みます。
PHPはWebサーバー側でプログラムが実行されます。(ブラウザソフトが受け取るのは実行結果のみ。)
一方、JavaScriptはブラウザ上で実行されます。
「ザンプ」もしくは「エグザンプ」と読みます。
Linux + Apache + MySQL + PHP = LAMP
インストールの流れ。
Skypeを使っている場合、「ツール」→「設定」から「詳細」→「接続」を選択し、「上記ポートの代わりに、ポート80を使用」のチェックを外します。
XAMPPのコントロールパネルから、Apacheを起動しておきます。
C:\xampp\htdocs
には http://localhost/
でアクセスC:\xampp\htdocs
内に test
フォルダを作成し、sample.html
を作成すると、http://localhost/test/sample.html
でアクセスできる※XAMPPを C:\xampp
にインストールした場合
※Macの場合は /Applications/XAMPP
にインストールされる
※PHPプログラムの拡張子は php
にする
http://localhost/test/sample.html
プログラムをHTMLに埋め込んで書くことができます。
<html>
<head>
<title>サンプル</title>
</head>
<body>
<p>今年は<?php echo date("Y"); ?>年です。</p>
</body>
</html>
sample.php
として保存して実行すると、ブラウザに
今年は2012年です。
のように表示されます。
C:\xampp\htdocs\test\sample.php
http://localhost/test/sample.php
<html>
<head>
<title>サンプル</title>
</head>
<body>
<p>今年は2012年です。</p>
</body>
</html>
http://
経由でアクセスしているか?PHPプログラムをUTF-8で書くときは、「BOMなし」のUTF-8にします。
<html>
<head>
<title>サンプル</title>
</head>
<body>
<p><?php
//画面に文字を表示する命令です
echo "こんにちは。<br />";
echo "PHPの世界へようこそ!";
/*
echo "ここは実行されません。";
*/
?></p>
</body>
</html>
echo "表示したい文字";
echo
に続いてダブルクォートかシングルクォートで囲った文字を指定すると、画面に出力されます。
命令の最後には ;
を書きます。書き忘れてエラーになることが多いので注意。
<!--ここからメインコンテンツ-->
<!--2012/05/01修正-->
<!--
<ul>
<li>一時的に非表示にしたいコンテンツ</li>
</ul>
-->
<html>
<head>
<title>サンプル</title>
</head>
<body>
//画面に文字を表示する命令です
echo "こんにちは。";
</body>
</html>
<?php ~ ?>
の外に書くと、PHPの文法に従って処理されません。
<html>
<head>
<title>サンプル</title>
</head>
<body>
<p><?php
//画面に文字を表示する命令です
echo "こんにちは。<br />";
echo "PHPの世界へようこそ!";
/*
echo "ここは実行されません。";
*/
?></p>
</body>
</html>
<html>
<head>
<title>サンプル</title>
</head>
<body>
<p>こんにちは。<br />PHPの世界へようこそ!</p>
</body>
</html>
$aaa = 5;
$keisan = 2 + 4;
$data = "こんにちは";
$
から始まる文字は変数とみなされ、値を格納できます。
値は後で計算に使用したり、echo
で表示したりできます。
$aaa = 5;
$bbb = $aaa + 3;
$data = "さようなら";
echo $aaa;
echo $bbb;
echo $data;
<html>
<head>
<title>サンプル</title>
</head>
<body>
<p><?php
//計算結果を変数に格納
$answer = 5 + 3;
//変数の内容を表示
echo $answer;
?></p>
</body>
</html>
<html>
<head>
<title>サンプル</title>
</head>
<body>
<p><?php
echo "いらっしゃいませ!";
//条件に従って文字を表示します
if (date("d") > 25) {
echo "毎月26日以降はお客様感謝デーです!";
}
?></p>
</body>
</html>
関数=あらかじめPHPに用意されている命令で、その関数名を書くと処理の結果が返ってきます。必要なら、値を渡すこともできます。
date(フォーマット)
カッコの中に特定の文字を指定すると、日時が返ってきます。
echo date('d'); //日(「01」など)
echo date('m'); //月(「06」など)
echo date('H'); //時間(「18」など)
echo date('m/d'); //月日(「06/01」)
echo date('Y/m/d H:i:s'); //日時(「2012/06/01 18:30:02」など)
mb_send_mail("送信先", "件名", "本文", "From: 送信元");
メールを送信できます。送信できたか否かの結果が返ってきます。
mb_send_mail(
"example@example.com",
"テストメール",
"これはPHPからのテストメールです。",
"From: from@example.com"
);
自分のパソコンにインストールしたXAMPPからは送信できないことがあります。
file_get_contents("読み込むファイル名");
ファイル名を指定すると、ファイルの内容が返ってきます。
file_put_contents("書き込むファイル名", "書き込む内容");
ファイル名と書き込む内容を指定すると、ファイルに書き込む。書き込めたか否かの結果が返ってきます。
<html>
<head>
<title>サンプル</title>
</head>
<body>
<p><?php
$count = file_get_contents("count.txt") + 1;
file_put_contents("count.txt", $count);
echo $count;
?></p>
</body>
</html>
大抵のことは、PHPにあらかじめ用意された命令で実現できます。命令の数が非常に多いので、すべてを覚えるのは不可能です。必要に応じて調べましょう。
「エスキューエル」もしくは「シークェル」と読みます。
1,000円以上の商品の名前を、最大10件取得する。
SELECT name FROM catalogs WHERE price >= 1000 LIMIT 10;
PHPにはMySQLを操作するための命令が用意されています。
mysql_connect
mysql_select_db
mysql_query
mysql_fetch_array
mysql_close
//データベースに接続
$con = mysql_connect('localhost', 'taro', 'Xjh93k');
//データベース選択
$result = mysql_select_db('phpdb', $con);
//命令を実行
$result = mysql_query('SELECT name FROM address LIMIT 10;', $con);
//結果を受け取る
$data = mysql_fetch_array($result);
//結果を表示
echo $data['name'];
//接続を切断
$con = mysql_close($con);
プログラムにエラーがあった際、その内容を表示できます。
C:\xampp\php\php.ini
の533行目(Macの場合は /Applications/XAMPP/xamppfiles/etc/php.ini
の277行目)
display_errors = On
C:\xampp\php\php.ini
の516行目(Macの場合は /Applications/XAMPP/xamppfiles/etc/php.ini
の270行目)
error_reporting = E_ALL | E_STRICT
error_reporting = E_ALL
error_reporting = E_ALL & ~E_NOTICE
※PHP5.3の場合
※本番環境では、エラーメッセージを表示しない方がいい
<?php
echo 'こんにちは。';
rcho 'PHPの世界にようこそ!';
?>
Parse error: syntax error,
unexpected T_CONSTANT_ENCAPSED_STRING
in C:\xampp\htdocs\test\sample.php on line 4
echo のスペルミス。
<?php
echo 'こんにちは。'
echo 'PHPの世界にようこそ!';
?>
Parse error: syntax error,
unexpected T_ECHO, expecting ',' or ';'
in C:\xampp\htdocs\test\sample.php on line 4
; の付け忘れ。
<?php
echo 'こんにちは。;
echo 'PHPの世界にようこそ!';
?>
Parse error: syntax error,
unexpected T_STRING, expecting ',' or ';'
in C:\xampp\htdocs\test\sample.php on line 4
' の閉じ忘れ。
<?php
if (date("d") > 25) {
echo "毎月26日以降はお客様感謝デーです!";
echo "ご利用ありがとうございます!";
?>
Parse error: syntax error,
unexpected $end
in C:\xampp\htdocs\test\sample.php on line 9
} の閉じ忘れ。
<?php
while($data=mysql_fetch_array($result)){
if($data['age']==30){
$flag=true;
}
}
?>
<?php
while ($data = mysql_fetch_array($result)) {
if ($data['age'] == 30) {
$flag = true;
}
}
?>
<div id="index">
<h2>目次</h2>
<ul>
<li>はじめにお読みください</li>
<li>活用方法</li>
<li>FAQ</li>
</ul>
<div id="news">
<h2>ニュース</h2>
<ul>
<li>FAQを公開しました</li>
<li>公式サイトオープン</li>
</ul>
</div>
<div id="index">
<h2>目次</h2>
<ul>
<li>はじめにお読みください</li>
<li>活用方法</li>
<li>FAQ</li>
</ul>
<div id="news">
<h2>ニュース</h2>
<ul>
<li>FAQを公開しました</li>
<li>公式サイトオープン</li>
</ul>
</div>
<span style="font-size:9999px;">いたずら</span>
<script>document.location='http://www.google.co.jp/'</script>
この手法は「Script Insertion」と呼ばれます。
基本は「入力内容のチェックを行う」です。
echo $message;
echo htmlspecialchars($message);
<?php
//Cookieに書き込み
setcookie("xxx", "任意の値");
?>
<?php
//Cookieの内容を表示
echo $_COOKIE["xxx"];
?>
Cookieに似た機能です。ただしデータはサーバー側に保存され、訪問者を区別するためのIDのみCookieに保存されます。(IDは、実際は 70k10tkl7p1k2t39anju9hit55
のような値。)
<?php
//セッションの利用を開始
session_start();
?>
<?php
//セッションに書き込み
$_SESSION["xxx"] = "任意の値";
?>
<?php
//セッションの内容を表示
echo $_SESSION["xxx"];
?>
<html>
<head>
<title>サンプル</title>
</head>
<body>
<form action="view.php" method="post">
名前:<br />
<input type="text" name="name" size="30" value="" /><br />
メールアドレス:<br />
<input type="text" name="mail" size="30" value="" /><br />
コメント:<br />
<textarea name="comment" cols="30" rows="5"></textarea><br />
<br />
<input type="submit" value="登録する" />
</form>
</body>
</html>
<form action="view.php" method="post">
view.php
で $_POST
という変数に格納される<input type="text" name="name" size="30" value="" />
$_POST["name"]
<textarea name="comment" cols="30" rows="5"></textarea>
$_POST["comment"]
<html>
<head>
<title>サンプル</title>
</head>
<body>
<dl>
<dt>名前</dt>
<dd><?php echo $_POST["name"] ?></dd>
<dt>メールアドレス</dt>
<dd><?php echo $_POST["mail"] ?></dd>
<dt>コメント</dt>
<dd><?php echo $_POST["comment"] ?></dd>
</dl>
</body>
</html>
<?php
$xml = simplexml_load_file(
'http://api.twitter.com/1/users/show/masason.xml'
);
echo $xml->name;
echo $xml->screen_name;
?>