署名フォームのソース

 
<?php
$po1 = $_POST["kuni"];
$po2 = $_POST["home"];
$po3 = $_POST["sign"];
$po4 = $_POST["hand"];
$po5 = $_POST["pass"];
 
 
//ヒトムルからの郵便受け、「$po1」にバリューが入る。
//住所、「$po2」=入力された住所。
//名前、「$po3」=入力された名前。
//ハンドル、「$po4」=入力されたコテハン。
//パスワード、「$po5」=入力されたパスワード。
 
if (strlen($po2) > 50){
print("住所が長すぎます。");
exit;}
elseif(strlen($po3) > 30){
print("お名前が長すぎます。");
exit;}
elseif(strlen($po4) > 30){
print("コテハンが長すぎます。");
exit;}
elseif(strlen($po5) > 30){
print("パスワードが長すぎます。");
exit;}
 
//strlenは、言葉の長さを計る記号。
//ただし、文字種を特定しません。
//その方が都合が良いと思います。
 
 
 
//右側の数字は、半角分です。
//全角だと15文字という事になります。
 
 
 
 
 
if($po1 == "0000"){
print("都道府県が未入力。");
exit;}
elseif($po2 == ""){
print("住所が入力されていません。");
exit;}
elseif($po3 == ""){
print("お名前が未入力。");
exit;}
elseif($po4 == ""){
print("コテハンが未入力。");
exit;}
elseif($po5 == ""){
print("パスワードが未入力。");
exit;}
 
//架空のバリュー「0000」を作らないと、
//誤作動を起こして、
//「↓南 北↑.log」というファイルを
//作ってしまいます。
 
 
 
 
 
 
 
 
 
 
//exitを付けないと、以下の処理を実行してしまいます。
 
$ng = file_get_contents
("in/handle.log","r");
$str = strstr($ng, $po4);
if ($str === false)
{echo "";}
else{echo "ごめんなさい、($po4)は 、
先客があります。";
exit;}
?>
 
//このスクリプトは、コテハン重複回避の為です。
//file_get_contents この記号は、ログ参照の決定版。
//strstr、()内、左の中から右を調べる。
//見つからない時に、「false」。
//その場合、黙って作業を続行。
//逆の場合、先着コテハンを挙げて、
//その場所まで指定できるそうです。(=strripos)
//exitを付けないと、以下の処理を実行してしまいます。
 
 
<?php
$po1 = $_POST["kuni"];
$po2 = $_POST["home"];
$po3 = $_POST["sign"];
 
$file = fopen("on/$po1.log","a");
flock($file,LOCK_EX);
fwrite($file,$po2."\n");
fwrite($file,$po3."\n");
fclose($file);
$file2 = fopen("in/$po1.log","r+");
$count = fgets($file2);
$count = $count + 1;
rewind($file2);
flock($file2,LOCK_EX);
fwrite($file2,$count);
fclose($file2);
?>
 
 
//ここは、本当は重ねなくて良い部分です。
 
 
 
//バリューとファイル名が同一なので、関数になります。
//同時アクセス防止の為、ファイルをロック。
//ファイルに「住所」を書く、+改行。
//ファイルに「名前」を書く、+改行。
//ファイルを閉じる。同時にロック解除。
//ファイルを開く、上書き更新。
//数えて、
//ひとつ足す。
//
//同時アクセス防止の為、ファイルをロック。
//ファイルに書く、+カウント。
//ファイルを閉じる。同時にロック解除。
 
 
<?php
$po3 = $_POST["sign"];
$po4 = $_POST["hand"];
$po5 = $_POST["pass"];
 
$file = fopen("on/hapass.log","a");
flock($file,LOCK_EX);
fwrite($file,$po4.":");
fwrite($file,$po5."\n");
fclose($file);
$file2 = fopen("on/handle.log","a");
flock($file2,LOCK_EX);
fwrite($file2,$po4."/");
fclose($file2);
$file3 = fopen("on/hasign.log","a");
flock($file3,LOCK_EX);
fwrite($file3,$po3.":");
fwrite($file3,$po4."/");
fclose($file3);
?>
 
 
 
 
 
 
//ファイルを開く。こちらは、書き込み。
//同時アクセス防止の為、ファイルをロック。
//ファイルに「コテハン」を書く、+":"。
//ファイルに「パスワード」を書く、+改行。
//ファイルを閉じる。同時にロック解除。
//コテハン参照用に、もうひとつファイルを作る。
//同時アクセス防止の為、ファイルをロック。
//ファイルに「コテハン」を書く、+"/"。
//ファイルを閉じる。同時にロック解除。
//名前とコテハン対照用に、さらにファイルを作る。
//同時アクセス防止の為、ファイルをロック。
//ファイルに「名前」を書く、+":"。
//ファイルに「コテハン」を書く、+"/"。
//ファイルを閉じる。同時にロック解除。
 
 
<?php
$po1 = $_POST["kuni"];
$file = fopen("in/00all.log","r+");
$count = fgets($file);
$count = $count + 1;
rewind($file);
flock($file,LOCK_EX);
fwrite($file,$count);
fclose($file);
print("あなたは衆議院議員です。");
?>
 
 
//ファイルを開く、上書き更新。
//数えて、
//ひとつ足す。
//
//同時アクセス防止の為、ファイルをロック。
//ファイルに書く、+カウント。
//ファイルを閉じる。同時にロック解除。
//あなたを迷わせる、甘言。
 
 




 少しづつ、勉強しながら作ったので、プログラムが複数になっています。
 「?>」と「<?php」とを略して、ひとつにする事は出来るのですが、その場合、「$file」や「$count」に番号を振らねばなりません。へたをすると、誤作動を起こしそうなので、そのままにしてあります。
 これはもちろん、「j_shomei.php」ファイルとして、「j_shomei.htm」ファイルの裏側に、寄り添うように存在しています。そして、陽の目を見る事はありません。

 ちなみに、これは表になっているので、このままコピペしても使えません。律儀に、表の枠内をコピペして下さい。また、PHP有効のサーバー空間に送らないと、起動しません。

 もちろん、黄色いフォルダ「in」や「on」を作って、その中に、ログ・ファイルを入れて置く必要があります。覚え書きの為のファイル「$po1.log」「hapass.log」「hasign.log」は「402」で機能します。たびたび参照する事になるファイル「handle.log」だけは、「406」にする必要があります。
 「$po1.log」は、バリュー名の数だけ用意します。「$po1」というのは、関数ですよ。









戻る