dポイントプレゼントキャンペーン実施中!

phpのページが白紙で表示される

phpでメールフォームを作成しています。
フォーム画面から確認画面に遷移すると
ページが白紙で表示されてしまい困っています。

生成されたページのソースをブラウザで見ても
何も書かれておらず、本当に白紙の状態です。

<html>より前に書いたソースに問題がありそうですが
理由がわかりません。
どなたか解決策にお心当たりございましたらお願いいたします。

以下問題のページ<html>までのソース

————————————————————
<?php

function checkInput($var) {
if (is_array($var)) {
return array_map('checkInput', $var);
} else {
if (get_magic_quotes_gpc()) {
$var = stripslashes($var);
}

if (preg_match('/¥0/', $var)) {
die('不正な入力です');
}

if (!mb_check_encoding($var, 'UTF-8')) {
die('不正な入力です');
}

return $var;

}
}

session_start();

$_POST = checkInput($_POST);

$sei = isset($_POST['sei']) ? $_POST['sei'] :NULL;
$mei = isset($_POST['mei']) ? $_POST['mei'] :NULL;
$address = isset($_POST['address']) ? $_POST['address'] :NULL;
$email = isset($_POST['email']) ? $_POST['email'] :NULL;

$error = array();

if (trim($sei) == '') {
$error[] = '必須項目です';
} else if (mb_strlen($sei) > 10) {
$error[] = '10文字以内でお願いいたします';
}

if (trim($mei) == '') {
$error[] = '必須項目です';
} else if (mb_strlen($mei) > 10) {
$error[] = '10文字以内でお願いいたします';
}

if (trim($address) == '') {
$error[] = '必須項目です';
} else if (mb_strlen($address) > 100) {
$error[] = '100文字以内でお願いいたします';
}

if (trim($email) == '') {
$error[] = '必須項目です';
} else {
$pattern =
'/^([a-z0-9¥+_¥-])(¥.[a-z0-9¥+_¥-]+)*@([a-z0-9¥-]+¥.)+[a-z]{2,6}$/iD';
if (!preg_match($pattern, $email)) {
$error[] = 'メールアドレスの形式が正しくありません';
}

$_SESSION['sei'] = $sei;
$_SESSION['mei'] = $mei;
$_SESSION['address'] = $address;
$_SESSION['email'] = $email;
$_SESSION['error'] = $error;

if(count($error) > 0) {

$dirname = dirname($_SERVER['SCRIPT_NAME']);
$dirname - $dirname == DIRECTORY_SEPARATOR ? '' : $dirname;
$uri = 'http://' . $_SERVER['SERVER_NAME'] .
$dirname . '/present.php';
header('HTTP/1.1 303 See Other');
header('Location: ' . $uri);

} else {

?>
<html>

————————————————————

よろしくお願いいたします。

A 回答 (2件)

エラーも出ずに空白が表示されるのは文字コードの自動認識がブラウザ側で出来ていないパターンが多いです。


<HTML>の後に続くタグの中に
<meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
など、文字コードを明示した上で(ここではUTF8)、プログラムのソースコード自体をその文字コードにあわせてやる必要があります。
この部分をチェックした上でなお空白なら「<!DOCTYPE」タグなどをHTMLタグの前に入れてみてはどうでしょうか?
    • good
    • 0

アクセスログを確認することはできませんか?


原因究明には、ログを見るのが確実です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!