ファイル名を取得して表示する

echo $_SERVER['PHP_SELF'];

1文字目~13文字目をslice

$fname = $_SERVER['PHP_SELF'];
echo substr($fname, 1, 12);

ファイルを複製する

$i = 1;
$copy = '03-3567-000'.$i.'.php';
copy('03-3567-0003.php', $copy);

03-3567-0001.php の中身のコードも、03-3567-0003.phpと同じものになっています。

ファイルを複数複製する

for($i = 0; $i < 10; $i++){
	$copy = '03-3567-000'.$i.'.php';
	if(!file_exists($copy)){
	copy('03-3567-0003.php', $copy);	
	}
}

これ、何百万のphpファイルと何百万のmysqlレコードをつくるのか!?

phpで郵便番号から住所を取得

$zip = "1530042";
$base_url = "http://zipcloud.ibsnet.co.jp/api/search?zipcode=".$zip."";
$json = file_get_contents($base_url);
print_r('<pre>');
var_dump($json);
print_r('</pre>');
$arr = json_decode($json, true);
echo $arr['results'][0]['address1']. "<br>";
echo $arr['results'][0]['address2']. "<br>";
echo $arr['results'][0]['address3'];

string(293) “{
“message”: null,
“results”: [
{
“address1”: “東京都”,
“address2”: “目黒区”,
“address3”: “青葉台”,
“kana1”: “トウキョウト”,
“kana2”: “メグロク”,
“kana3”: “アオバダイ”,
“prefcode”: “13”,
“zipcode”: “1530042”
}
],
“status”: 200
}”
東京都
目黒区
青葉台

検索ページをスタイリング

sumo

リクナビ

吉本タレント検索

レコチョク検索

amazon

zozo

model search

model town:http://www.modeltown.jp/index.php?app_controller=search&type=items&run=true
モデルタウンすげーな、髪型で検索できんのかよ!めっちゃいいやんけ。
私も機械学習の画像認識で、髪型登録して、髪型検索のサービス作りたいです。。。。

初期画面

シンプルだが及第点ってところか?

OK, 悪くない

後は、メール受信画面を成形

ほぼ出来たか?

入力フォームをスタイリング

戦後のスカイラインのデザインはかっこよかったが、やはり、デザインはその時の時代背景が出ますね。。

<style>
.submit1 {
	height:30px;
	margin-top:5px;
	padding-right:15px;
	padding-left:15px;
	background-color:#0099FF;
	color:#fff;
	border:0px;
}
.submit1:active {
    -ms-transform: translateY(2px);
    -webkit-transform: translateY(2px);
    transform: translateY(2px);
    border-bottom: none;
}
.form2{
	height:30px;
}
textarea{
	padding-top:5px;
}
</style>

<form action="?compose=done" method="post" enctype="multipart/form-data">
			<br>
			<input type="text" class="form2" name="to" size="80%" value="<?php echo $to; ?>" placeholder=" 宛先 ※必須"  required><br>
			<br>
			<input type="text" class="form2" name="subject" value="<?php echo $subject; ?>" placeholder=" 件名" size="80%"><br>
			<br>
			<textarea placeholder=" メッセージを入力してください ※必須" name="body" rows="12" cols="82%" required></textarea>
			</p>
			<input type="file" id="files" name="files&#91;&#93;" multiple />
			<div id="caution">
			※送信できるファイルの拡張子は"gif","jpg","jpeg","png"の何れかです。<br>
			※ファイル送信は最大2つまでです。3つ以上選択しても、3つ目以降は送れません。また、二つのファイルを送信する場合は、キーボードの"ctl"ボタンなどで二つ選択した状態で開いてください。</div>
			<output id="list"></output>
			<p>
			<input type="submit" class="submit1" value="送信">
			</form>

なんか、hrがしょぼいですな。。

あ、hrもcssでスタイリングできるんですね♪

hr{
	height: 2px;
	background-color: #F8F8FF;
	color: #F8F8FF;
}

割といい

メールボックスをスタイリング

headerをつくっていきます。

.header-wrap{
	background-color:#222222;
	margin-bottom:10px;
}
.title-wrap{
   display:inline-block;
   vertical-align: bottom;
}
.title-wrap h1 {
	font-size:23px;
	padding-top:0px;
	padding-left:15px;
	margin-bottom:0px;
	color:#fff;
}
.title-wrap h2 {
	font-size:14px;
	margin-top:0px;
	padding-left:15px;
	padding-bottom:5px;
	color:#fff;
}
.out {
	display:inline;
	vertical-align: bottom;
	font-size:12px;
	float:right;
	padding-top:15px;
	padding-right:15px;
	color:#fff;
}

もう少し細くします。

flex-1, flex-2にヘッダーをつけます。

.side{
	height:12px;
	background-color:#E6FFE9;
}
.main{
	height:12px;
	background-color:#F5FFFA;
}

ul, li要素のlist-styleをnoneにします。

ul{
	list-style:none;
}
li{
	margin:7px;
}

まぁまぁOK

ログアウト画面の表示

<?php 

require("auth.php");
$auth = new Auth();
$auth->logout();

?>
お待ちください...
<script>
setTimeout(function(){
	window.location.href = "login.php";
}, 600);
</script>

gmailと一緒で、特にスタイリングはなしでOKですね。settimeは600msくらいにしておきます。

さあ、次は、form周りでしょうか。

メールボックス ログイン後のUI

hotmail: 大人っぽいデザインです。

gmail:やすっぽい印象があり、あまり好きではない

yahoo:ごちゃごちゃしていて見にくい

アマゾン:特に感想なし

テキスト小さめで、ヘッダーは黒・紺の方が落ち着いて見える気がします。

初期画面

アカウント登録画面のデザイン

amazon: カッケー

hotmail: 渋い

yahoo: ヤフーっぽい感じが出てて、なんか好感持てる!

google: ああ、登録画面はGoogleが一番いいかも。特にセキュリティをケアしているところが好きだ。

どこも、基本はログインの画面と整合性が取れてますね。
なるほど!

初期画面

css

.form1{
	width:100%;
	height:30px;
	margin-top:5px;
}
.submit {
	width:100%;
	height:30px;
	margin-top:5px;
	background-color:#0099FF;
	color:#fff;
	border:0px;
}
select{
	width:100%;
	height:30px;
	margin-bottom:5px;
	-webkit-appearance: none;
	-moz-appearance: none;
	appearance: none;
	border: 1px solid #999;
	padding-left:5px;
}

修正後 ->
適当だけど雰囲気はそれっぽい(笑)

ログイン画面のデザイン

なんじゃこれ、よく見たら、全部カッケーーーーーー すげーーーーー

ホットメール

gmail

yahoo

twitter

facebook

LINE

Amazon

なんだよこれ、2回言うけど、全部カッケー
すげーなー

input formはyahoo, facebookを除いて中央寄せがトレンドのようですね。

初期画面

スタイリングしていきます。

<div class="signin">
      <h1>サインイン</h1>
      <form method="POST" action="login.php">
        <input type="text" name="username" placeholder="ユーザー名"/><br>
        <input type="password" name="password" placeholder="パスワード"/><br>
        <input type="submit" value="ログイン" />
      </form>
      ※アカウントを持ちでない場合、<a href="register.php">新規登録</a>できます。
      </div>

css

body{
	background-color:#EEEEEE;
}
.signin{
	background-color:#fff;
	margin:50 auto;
	padding-top:10px;
	padding-left:10px;
	width:400px;
	height:400px;
}

更にスタイリング

body{
	background-color:#EEEEEE;
}
.signin{
	background-color:#fff;
	margin:50 auto;
	padding-top:10px;
	padding-left:10px;
	padding-right:10px;
	width:400px;
	height:400px;
}
.form1{
	width:100%;
	height:30px;
	margin-top:5px;
}
.submit {
	width:100%;
	height:30px;
	margin-top:5px;
	background-color:#0099FF;
	color:#fff;
	border:0px;
}
#fs-s{
	font-size:small;
	color:gray;
}

おおお、それっぽい(笑)

postされた条件によるsql文の分岐とconcatがnullの時

「これ、絶対もっと効率的に書ける筈」、と思いながら結局、POSTされた際のsqlのパターンを全部書いてしまった。
終わってる。死にたい。。

concatの値がnullがある場合は、ifnullを使います。
CONCAT(IFNULL(username, ”), IFNULL(message, ”))

<?php
	$dsn = "mysql:dbname=mail;host=localhost";
	$user = "hoge";
	$password = "hogehoge";
	try {
	    $dbh = new PDO($dsn, $user, $password);
	} catch (PDOException $e){
	    print('connection failed:'.$e->getMessage());
	}

	if(!empty($_POST["search"]) and !empty($_POST["gender"]) and !empty($_POST["age"]) and !empty($_POST["job"]) and !empty($_POST["area"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and gender = '".$_POST["gender"]."' and age = '".$_POST["age"]."' and job = '".$_POST["job"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["age"]) and !empty($_POST["job"]) and !empty($_POST["area"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and age = '".$_POST["age"]."' and job = '".$_POST["job"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["gender"]) and !empty($_POST["job"]) and !empty($_POST["area"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and gender = '".$_POST["gender"]."' and job = '".$_POST["job"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["gender"]) and !empty($_POST["age"]) and !empty($_POST["area"])){
			$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and gender = '".$_POST["gender"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["gender"]) and !empty($_POST["age"]) and !empty($_POST["job"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and gender = '".$_POST["gender"]."' and age = '".$_POST["age"]."' and job = '".$_POST["job"]."'  order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["job"]) and !empty($_POST["area"])){
			$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and job = '".$_POST["job"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["age"]) and !empty($_POST["area"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and age = '".$_POST["age"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["age"]) and !empty($_POST["job"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and age = '".$_POST["age"]."' and job = '".$_POST["job"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["gender"]) and !empty($_POST["area"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and gender = '".$_POST["gender"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["gender"]) and !empty($_POST["job"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and gender = '".$_POST["gender"]."' and job = '".$_POST["job"]."' and order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["gender"]) and !empty($_POST["age"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and gender = '".$_POST["gender"]."' and age = '".$_POST["age"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["gender"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and gender = '".$_POST["gender"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["age"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and age = '".$_POST["age"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["job"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and job = '".$_POST["job"]."' order by id desc";
	}elseif(!empty($_POST["search"]) and !empty($_POST["area"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["search"])){
		$sql = "select * from users where CONCAT(IFNULL(username, ''), IFNULL(message, '')) like '%".$_POST["search"]."%' order by id desc";
	}elseif(!empty($_POST["gender"]) and !empty($_POST["age"]) and !empty($_POST["job"]) and !empty($_POST["area"])){
		$sql = "select * from users where gender = '".$_POST["gender"]."' and age = '".$_POST["age"]."' and job = '".$_POST["job"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["gender"]) and !empty($_POST["job"]) and !empty($_POST["area"])){
		$sql = "select * from users where gender = '".$_POST["gender"]."' and job = '".$_POST["job"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["gender"]) and !empty($_POST["age"]) and !empty($_POST["area"])){
		$sql = "select * from users where gender = '".$_POST["gender"]."' and age = '".$_POST["age"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["gender"]) and !empty($_POST["age"]) and !empty($_POST["job"])){
		$sql = "select * from users where gender = '".$_POST["gender"]."' and age = '".$_POST["age"]."' and job = '".$_POST["job"]."' order by id desc";
	}elseif(!empty($_POST["gender"]) and !empty($_POST["area"])){
		$sql = "select * from users where gender = '".$_POST["gender"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["gender"]) and !empty($_POST["job"])){
		$sql = "select * from users where gender = '".$_POST["gender"]."' and job = '".$_POST["job"]."' order by id desc";
	}elseif(!empty($_POST["gender"]) and !empty($_POST["age"])){
		$sql = "select * from users where gender = '".$_POST["gender"]."' and age = '".$_POST["age"]."' order by id desc";
	}elseif(!empty($_POST["gender"])){
		$sql = "select * from users where gender = '".$_POST["gender"]."' order by id desc";
	}elseif(!empty($_POST["age"]) and !empty($_POST["job"]) and !empty($_POST["area"])){
		$sql = "select * from users where age = '".$_POST["age"]."' and job = '".$_POST["job"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["age"]) and !empty($_POST["area"])){
		$sql = "select * from users where age = '".$_POST["age"]."' and area = '".$_POST["area"]."' order by id desc";
	}elseif(!empty($_POST["age"]) and !empty($_POST["job"])){
		$sql = "select * from users where age = '".$_POST["age"]."' and job = '".$_POST["job"]."' order by id desc";
	}elseif(!empty($_POST["age"])){
		$sql = "select * from users where age = '".$_POST["age"]."' order by id desc";
	}elseif(!empty($_POST["job"]) and !empty($_POST["area"])){
		$sql = "select * from users where job = '".$_POST["job"]."' and are = '".$_POST["are"]."' order by id desc";
	}elseif(!empty($_POST["job"])){
		$sql = "select * from users where job = '".$_POST["job"]."' order by id desc";
	}elseif(!empty($_POST["area"])){
		$sql = "select * from users where area = '".$_POST["area"]."' order by id desc";
	}else{
		$sql = "select * from users order by id desc";
	}
	$stmt = $dbh->query($sql);
	$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
	// var_dump($result);
?>

<style>
#img{
	position: relative;
}
#img img{
	vertical-align:top;
}
#icon{
	vertical-align:top;
	float:left;
}
#profile{
	display: inline;
}
</style>
<form action="" method="post"><input type="search" name="search" placeholder="ユーザー名もしくは一言メッセージから探す"> <input type="submit" value="検索"><br>
性別:<input type="radio" name="gender" value="男性">男性
<input type="radio" name="gender" value="女性">女性 
年齢:
	<select name="age">
	<option value="">選択してください</option>
	<option value="20歳未満">20歳未満</option>
	<option value="20-24歳">20-24歳</option>
	<option value="25-29歳">25-29歳</option>
	<option value="30-34歳">30-34歳</option>
	<option value="35-39歳">35-39歳</option>
	<option value="40-44歳">40-44歳</option>
	<option value="45-49歳">45-49歳</option>
	<option value="50-54歳">50-54歳</option>
	<option value="55-59歳">55-59歳</option>
	<option value="60-64歳">60-64歳</option>
	<option value="65-69歳">65-69歳</option>
	<option value="70-74歳">70-74歳</option>
	<option value="75-79歳">75-79歳</option>
	<option value="80歳以上">80歳以上</option>
	</select>
	職業:
	<select name="job">
	<option value="">選択してください</option>
	<option value="公務員">公務員</option>
	<option value="経営者・役員">経営者・役員</option>
	<option value="会社員">会社員</option>
	<option value="自営業">自営業</option>
	<option value="自由業">自由業</option>
	<option value="専業主婦">専業主婦</option>
	<option value="パート・アルバイト">パート・アルバイト</option>
	<option value="学生">学生</option>
	<option value="その他">その他</option>
	</select>
	登録地域:
	<select name="area">
	<option value="">選択してください</option>
	<option value="北海道">北海道</option>
	<option value="青森県">青森県</option>
	<option value="岩手県">岩手県</option>
	<option value="宮城県">宮城県</option>
	<option value="秋田県">秋田県</option>
	<option value="山形県">山形県</option>
	<option value="福島県">福島県</option>
	<option value="茨城県">茨城県</option>
	<option value="栃木県">栃木県</option>
	<option value="群馬県">群馬県</option>
	<option value="埼玉県">埼玉県</option>
	<option value="千葉県">千葉県</option>
	<option value="東京都">東京都</option>
	<option value="神奈川県">神奈川県</option>
	<option value="新潟県">新潟県</option>
	<option value="富山県">富山県</option>
	<option value="石川県">石川県</option>
	<option value="福井県">福井県</option>
	<option value="山梨県">山梨県</option>
	<option value="長野県">長野県</option>
	<option value="岐阜県">岐阜県</option>
	<option value="静岡県">静岡県</option>
	<option value="愛知県">愛知県</option>
	<option value="三重県">三重県</option>
	<option value="滋賀県">滋賀県</option>
	<option value="京都府">京都府</option>
	<option value="大阪府">大阪府</option>
	<option value="兵庫県">兵庫県</option>
	<option value="奈良県">奈良県</option>
	<option value="和歌山県">和歌山県</option>
	<option value="鳥取県">鳥取県</option>
	<option value="島根県">島根県</option>
	<option value="岡山県">岡山県</option>
	<option value="広島県">広島県</option>
	<option value="山口県">山口県</option>
	<option value="徳島県">徳島県</option>
	<option value="香川県">香川県</option>
	<option value="愛媛県">愛媛県</option>
	<option value="高知県">高知県</option>
	<option value="福岡県">福岡県</option>
	<option value="佐賀県">佐賀県</option>
	<option value="長崎県">長崎県</option>
	<option value="熊本県">熊本県</option>
	<option value="大分県">大分県</option>
	<option value="宮崎県">宮崎県</option>
	<option value="鹿児島県">鹿児島県</option>
	<option value="沖縄県">沖縄県</option>
	<option value="海外">海外</option>
</select><br>
</form>
<?php

	$i = 0;
	foreach($result as $value){
		if($i < 20){
			if(!empty($value&#91;"icon"&#93;)){
				$picon = $value&#91;"icon"&#93;;
				echo "<img src=\"".$picon."\" id=\"icon\" width=\"48px\" height=\"48px\">";
			} elseif($value['gender'] == "男性") {
				echo "<img src=\"asset/img/male.png\" id=\"icon\">";
			} else{
				echo "<img src=\"asset/img/female.png\" id=\"icon\">";
			}
			echo "<div id=\"profile\"><a href=\"?compose=new&to=".$value&#91;'username'&#93;."\">".$value['username'] ."</a>:".$value['age']." <span id=\"fs-s\">".$value['gender'] ."</span><br>";
			if(!empty($value["message"])){
				echo $value['job']."(".$value['area'].") <span id=\"fs-s\">一言メッセージ:「".$value["message"]."」</span></div><br><br>";
			} else {
				echo $value['job']."(".$value['area'].")</div><br><br>";
			}
			
			$i++;
		}
	}

挙動としては、思い通りに動いてくれるんだが、自分にがっかりするな。。

つなげると、
おおおお、基本機能はほぼ出来たか!

次は、スタイリングかな

mb_send_mailで違反内容をメールする

<?php

if(isset($_POST&#91;"violation"&#93;)){
	$subject = "メール違反報告" .$_POST&#91;"mailid"&#93;;
	$body =	"ユーザー名:".$_POST&#91;"name"&#93;. "\n";
	$body .= "違反内容:".$_POST&#91;"violation"&#93;. "\n";
	$body .= "詳細:". htmlspecialchars($_POST&#91;"report"&#93;);
	$header = "From: hoge@hoge.com\r\n";
	mb_send_mail("hogehoge@gmail.com", $subject, $body, $header);
}

$mailid = empty($_GET&#91;"inbox"&#93;)? 'null' : $_GET&#91;"inbox"&#93;;
$name = empty($_GET&#91;"from"&#93;)? '' : $_GET&#91;"from"&#93;;
?>
<style>
#caution {
  color:gray;
  font-size:small;
}
</style>
<?php if(!empty($_GET&#91;"from"&#93;)): ?>
法律やガイドラインに違反していると思われたメールを受信した場合は、このフォームから報告できます。<hr>
<form method="POST" action="?help=done">
違反項目:
<select name="violation">
	<option value="なし">選択してください</option>
	<option value="広告、もしくはPR">広告、もしくはPR</option>
	<option value="同じ内容を繰り返し送信">同じ内容を繰り返し送信</option>
	<option value="アダルト・罵倒雑言">アダルト・罵倒雑言</option>
	<option value="個人情報を含む投稿">個人情報を含む投稿</option>
	<option value="著作権、知的所有権の侵害">著作権、知的所有権の侵害</option>
	<option value="その他">その他</option>
</select>
<br><br>
報告内容(全角100文字以内で入力してください)<br>
<textarea maxlength="100" name="report" rows="8" cols="100%">
</textarea>
<br>
<div id="caution">
・いただいた報告に個別にお答えすることはありません。<br>
・いただいた報告に基づいて対応、処置することをお約束するものではありません。
</div><br>
<input type="hidden" name="name" value="<?php echo $name; ?>">
<input type="hidden" name="mailid" value="<?php echo $mailid; ?>">
<input type="submit" value="報告する">

<?php elseif($_GET&#91;"help"&#93; == 'done'): ?>
   			<p>報告が完了しました。</p>
<?php endif; ?>

受信側

つなげると、

さあ、最後、会員検索機能!