【发布时间】:2015-02-01 10:56:02
【问题描述】:
我正在尝试通过“提前退出”来清理我的代码,并且每次使用 return 语句时都会得到一个空白页。
我应该将 php 代码移动到单独的文件中吗?
此外,我很乐意获得一些清理代码的技巧。
谢谢!!
<?php
$capt_error = "";
$mismatch = "";
$name = $message = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
session_start();
// validate captcha
if (empty($_POST["capt"])) {
$capt_error = "Fältet är obligatoriskt.";
return null; // HERE, I GET A BLANK PAGE
} else {
if($_POST['capt'] != $_SESSION['rand']) {
$name = $_POST["name"];
$message = $_POST['message'];
$mismatch = "Inmatningen av CAPTHA är fel. Vänligen prova igen.";
}
else {
// write to file but only if cookie is not set
$ip_address = $_SERVER['REMOTE_ADDR'];
$time_stamp = date('Y-m-d H:i');
$data = "\n" . $_POST['name'] . ',' . $_POST['message'] . ',' . $ip_address . ',' . $time_stamp;
$ret = file_put_contents('data.txt', $data, FILE_APPEND | LOCK_EX);
if ($ret == false) {
die('Fel vid skrivning till fil. Skrivrättigheter saknas');
}
// set cookie
$cookie_name = $_POST['name'];
$cookie_value = $ip_address;
setcookie($cookie_name, $cookie_value, null, "/");
}
}
}
?>
<link rel="stylesheet" href="labb1.css" type="text/css">
<html>
<head>
<title>Labb 1</title>
</head>
<body>
<h1 class="title">Laboration 1 - Gästboken</h1>
<table border="1">
<thead>
<tr>
<th colspan="3" class="table-title">Min Gästbok</th>
</tr>
</thead>
<tbody>
<tr>
<td class="bold">FRÅN</td>
<td class="bold">INLÄGG</td>
<td class="bold">LOGGNING</td>
</tr>
<?php
// open file
$f = fopen("data.txt", "r");
// while not end of file
while (!feof($f)) {
// split values with -
$arr = explode(",", trim(fgets($f), "\r\n"));
print "<tr>";
print "<td>$arr[0]</td>";
print "<td>$arr[1]</td>";
print "<td>IP: $arr[2]<br>TID: $arr[3]</td>";
print "</tr>";
}
?>
</tbody>
</table>
<form action="" method="post">
<div class="border">
<div>
<span>Namn:</span>
<input type="text" name="name" value="<?php echo $name;?>">
</div>
<div>
<span>Meddelande:</span>
<textarea name="message" rows="5"><?php echo $message;?></textarea>
</div>
<div>
<?php
$rand = substr(str_shuffle(str_repeat("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", 5)), 0, 5);
session_start();
$_SESSION["rand"] = $rand;
print "<span>CAPTCHA skriv detta i rutan nedan: </span> <span class='red bold'>$rand</span>"
?>
<span class="error">* <?php echo $capt_error; ?></span>
<input type="text" name="capt">
<span class="error"><?php echo $mismatch?></span>
</div>
<div>
<input type="submit" value="Skicka">
</div>
<div>
<span class="red">*</span> är ett obligatoriskt fält
</div>
</div>
</form>
</body>
</html>
【问题讨论】:
-
你期待什么?
-
如果您希望在浏览器中获得
<link rel=...,则在这种特殊情况下只需删除行return null;
标签: php