PHP
初心者
バリデーション
未来電子

【初心者】PHPで未入力のバリデーションをする方法

未来電子テクノロジー株式会社でインターンをしている大学1回生です。

PHPで管理表を作っています。

まだ途中ですが、ここまでの経過をアウトプットします。


コード


index.php

<!DOCTYPE html>

<html lang="ja">
<meta charset="utf-8">
<head>
<title>入力画面</title>
</head>
<body>

<?php
//セッション開始
session_start();
//$htmlを初期化
$html = array();
//戻りの場合
if(isset($_POST['back'])){
//htmlentities()でHTMLコードをエスケープします。
$html['name'] = htmlentities($_SESSION['name'], ENT_QUOTES, 'UTF-8');
//初期値
}else{
//初期化
$_SESSION = array();
$html['name'] = '';
}
?>

<h3>入力画面</h3>

<form action="confirm.php" method="POST">

<table border="1">
<tr>
<td>名前</td>
<td><input type="text" name="name" value="<?php echo $html['name']; ?>" size=48></td>
</tr>
</table>

<input type="submit" name="confirm" value="-入力内容の確認-">

</form>

</body>
</html>



comfirm.php

<!DOCTYPE html>

<html lang="ja">
<meta charset="utf-8">
<head>
<title>確認画面</title>
</head>
<body>

<?php
//セッション開始
session_start();
//変数初期化
$html = array();
$_SESSION = array();
$strError= "";

//空じゃなかったらPOSTデータをSESSIONに格納、空やったら戻す
if(isset($_POST['name']) && $_POST['name'] != ''){
$_SESSION['name'] = $_POST['name'];
$html['name'] = htmlentities($_SESSION['name'], ENT_QUOTES, 'UTF-8');
//$html = $_SESSION['name']
}else{
$strError .="名前を記入してください<br/>\n";
$html['name'] = '';}
//フィルタリングでエラーがあれば
if($strError != ''){
echo $strError."<br/>\n";
?>

<form action="index.php" method="POST">
<input type="submit" name="back" value="-戻る-">
</form>

</div>
<hr/>
</body>
</html>
<?php
exit;
}
?>

<h3>確認画面</h3>

<table border="1">

<tr>
<td>名前</td>
<td><?php echo $html['name']; ?></td>
</tr>

<form action="complete.php" method="POST">
<input type="submit" name="comp" value="-完了へ-">
</form>

</body>
</html>


これで、名前を未入力で入力すると、戻るボタンが表示されます。


まとめ

次はsessionに格納した値をデータベースに入れるコードを書いていきたいと思っています。

プログラミング初心者のため、コードに何か間違いがあったらどうぞご指摘ください。