使用php创建将用户输入写入文本文件的表单
我对php非常陌生(3.5周),我正在参加一个php课程的项目。我已经在这个php文件上工作了好几天,我已经到了崩溃的边缘。以下是我努力实现的目标: 使用为保龄球比赛注册保龄球手的表单创建文档。使用一个文本文件将每个保龄球手的信息保存在单独的行中。包括保龄球手的姓名、年龄和平均年龄,用逗号分隔。确保项目目录对每个人都有读写权限 我已经成功地创建了表单,并且我认为我已经正确地设置了变量。我想我需要使用一个数组来存储基于用户输入的每个变量。我试过写这篇文章,但我打破了一切。以下是迄今为止我的代码:使用php创建将用户输入写入文本文件的表单,php,html,forms,text,readfile,Php,Html,Forms,Text,Readfile,我对php非常陌生(3.5周),我正在参加一个php课程的项目。我已经在这个php文件上工作了好几天,我已经到了崩溃的边缘。以下是我努力实现的目标: 使用为保龄球比赛注册保龄球手的表单创建文档。使用一个文本文件将每个保龄球手的信息保存在单独的行中。包括保龄球手的姓名、年龄和平均年龄,用逗号分隔。确保项目目录对每个人都有读写权限 我已经成功地创建了表单,并且我认为我已经正确地设置了变量。我想我需要使用一个数组来存储基于用户输入的每个变量。我试过写这篇文章,但我打破了一切。以下是迄今为止我的代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>List of Bowlers</title>
<meta http-equiv="content-type"
content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1 style="text-transform: uppercase; color: #666666; font-weight: 400; font-size: 1.5em; letter-spacing: 5px;">Register for the upcoming bowling tournament</h1>
<?php
if (isset($_POST['first_name']) && isset($_POST['last_
name'])) {
$BowlerFirstName = addslashes($_POST['first_name']);
$BowlerLastName = addslashes($_POST['last_name']);
$BowlerAge = addslashes($_POST['bowler_age']);
$BowlerAverage = addslashes($_POST['bowler_average']);
$NewBowler = "$BowlerLastName, $BowlerFirstName, $BowlerAge, $BowlerAverage\r\n";
$BowlersFile = "bowlers.txt";
if (file_put_contents($BowlersFile, $NewBowler,
FILE_APPEND) > 0)
echo "<p>" . stripslashes($_POST['first_name']) .
" " . stripslashes($_POST['last_name']) .
" has been registered for the upcoming bowling tournament.</p>\n";
else
echo "<p>An error has occurred in your registration. Please try again.</p>";
} else
echo "<p>To successfully enter the upcoming bowling tournament, enter
your first and last name and click the Register
button.</p>";
?>
<form action="bowling_names.php" method="POST">
<p>First Name: <input type="text" name="first_name"
size="30" /></p>
<p>Last Name: <input type="text" name="last_name"
size="30" /></p>
<p>Age: <input type="text" name="bowler_age"
size="30" /></p>
<p>Average: <input type="text" name="bowler_average"
size="30" /></p>
<p><input type="submit" value="Register" /></p>
</form>
<?php
$BowlersList = readfile("bowlers.txt");
echo $BowlersList;
?>
</body>
</html>
投球手名单
为即将到来的保龄球锦标赛注册
名字:
姓氏:
年龄:
平均值:
我真的在尝试学习这里的概念。如果你愿意提供帮助,请解释我的错误所在。我非常感谢任何帮助 这段代码有一个问题:
if (isset($_POST['first_name']) && isset($_POST['last_
name'])) {
而你的“姓氏”的破帖子数组将阻止它写入你的文件
它需要结合在一起:
if (isset($_POST['first_name']) && isset($_POST['last_name'])) {
然后,确保它的文本文件存在,否则您可能会收到如下警告:(如果您的系统设置为捕获/显示错误、警告、通知)
警告:readfile(bowlers.txt):无法打开流:没有这样的文件或目录
还要确保它具有适当的写入权限(如果它已经存在)
- 通常,644就足够了。作为最后手段,您可以使用777,但这不是一个安全的设置
- 文件夹本身也需要适当的权限才能写入。755是建议的设置
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
这段代码有一个问题:
if (isset($_POST['first_name']) && isset($_POST['last_
name'])) {
而你的“姓氏”的破帖子数组将阻止它写入你的文件
它需要结合在一起:
if (isset($_POST['first_name']) && isset($_POST['last_name'])) {
然后,确保它的文本文件存在,否则您可能会收到如下警告:(如果您的系统设置为捕获/显示错误、警告、通知)
警告:readfile(bowlers.txt):无法打开流:没有这样的文件或目录
还要确保它具有适当的写入权限(如果它已经存在)
- 通常,644就足够了。作为最后手段,您可以使用777,但这不是一个安全的设置
- 文件夹本身也需要适当的权限才能写入。755是建议的设置
添加到文件的顶部,这将有助于查找错误
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
我可以指出以下几点:
1) 此行不能有换行符:
if (isset($_POST['first_name']) && isset($_POST['last_
name'])) {
不知道你的原始代码是否有它,或者只是发布在这里的代码。如果有,请将其移除,使其显示:
if (isset($_POST['first_name']) && isset($_POST['last_name'])) {
2) 函数将文件内容直接输出到输出缓冲区,它不返回其内容,而是返回读取的字节数。因此,要将整个文件读入一个变量,您可以使用它
3) 我想您希望$BowlersList
成为一个数组。要实现这一点,您需要逐行读取文件,然后使用explode()
将每行拆分为一个数组。大概是这样的:
$fileName = "bowlers.txt";
$BowlersList = array();
if (file_exists($fileName)) {
$file = fopen($fileName, "r");
while(!feof($file)){
$line = fgets($file);
if ($line != "") {
$BowlersList[] = explode(", ", $line);
}
}
fclose($file);
} else {
echo "Bowlers file doesn't exist.";
}
echo "<pre>";print_r($BowlersList);echo "</pre>";
$fileName=“bowlers.txt”;
$BowlersList=array();
如果(文件_存在($fileName)){
$file=fopen($fileName,“r”);
而(!feof($file)){
$line=fgets($file);
如果($line!=“”){
$BowlersList[]=分解(“,”,$line);
}
}
fclose($文件);
}否则{
echo“Bowlers文件不存在。”;
}
回声“;打印(BowlersList);回声“;
我可以指出以下几点:
1) 此行不能有换行符:
if (isset($_POST['first_name']) && isset($_POST['last_
name'])) {
不知道你的原始代码是否有它,或者只是发布在这里的代码。如果有,请将其移除,使其显示:
if (isset($_POST['first_name']) && isset($_POST['last_name'])) {
2) 函数将文件内容直接输出到输出缓冲区,它不返回其内容,而是返回读取的字节数。因此,要将整个文件读入一个变量,您可以使用它
3) 我想您希望$BowlersList
成为一个数组。要实现这一点,您需要逐行读取文件,然后使用explode()
将每行拆分为一个数组。大概是这样的:
$fileName = "bowlers.txt";
$BowlersList = array();
if (file_exists($fileName)) {
$file = fopen($fileName, "r");
while(!feof($file)){
$line = fgets($file);
if ($line != "") {
$BowlersList[] = explode(", ", $line);
}
}
fclose($file);
} else {
echo "Bowlers file doesn't exist.";
}
echo "<pre>";print_r($BowlersList);echo "</pre>";
$fileName=“bowlers.txt”;
$BowlersList=array();
如果(文件_存在($fileName)){
$file=fopen($fileName,“r”);
而(!feof($file)){
$line=fgets($file);
如果($line!=“”){
$BowlersList[]=分解(“,”,$line);
}
}
fclose($文件);
}否则{
echo“Bowlers文件不存在。”;
}
回声“;打印(BowlersList);回声“;
谢谢!这就成功了。我明白了,我不能让if语句的开放行中的isset()溢出到第二行?我以为php完全忽略了空格?我在这里错过了什么?@drewtuzzon不客气。不,因为这只是破坏了POST数组,是超全局数组的一部分,而不是标准数组。你可以在你有&&
的地方休息,而不是POST数组本身;可爱的人们路过这里,对一个完美的回答说大话谢谢!这就成功了。我明白了,我不能让if语句的开放行中的isset()溢出到第二行?我以为php完全忽略了空格?我在这里错过了什么?@drewtuzzon不客气。不,因为这只是破坏了POST数组,是超全局数组的一部分,而不是标准数组。您可以在有&
的地方使用中断,而不是POST数组本身。a