【发布时间】:2016-03-05 22:19:17
【问题描述】:
我早些时候在这篇帖子here 中收到了答案和解决方案,因此(几乎)完成了我的学校任务。
然而,在选择浏览器时,我发现了另一个问题。
当我在 Safari 中查看 overview.php 时,它看起来像这样:
正如您在图片中看到的那样,每当我使用 Safari 进行输入时,前五行中的所有信息都会显示为空格,但下一行(在底部)包含所有正确的信息。
当我使用谷歌浏览器时,我一点问题都没有,你可以在这里看到:
所以我的问题是,我的代码的哪一部分让 Safari 执行空条目?
我的代码:
index.html - 我的标准 HTML 表单所在的页面。
<!DOCTYPE html>
<html lang="da">
<html>
<head>
<title>Mobiloversigten</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="stylesheet.css">
</head>
<body>
<form name="formular" id="formular" method="post" action="process.php" enctype="multipart/form-data" autocomplete="on">
<fieldset>
<legend>Enhedsoplysninger</legend>
<div><label>Producent: <input type="text" name="manufactor" id="manufactor" required="required" size="30"></label></div>
<div><label>Produktnavn: <input type="text" name="product" id="product" required="required" size="30"></label></div>
<div><label>Farve: <input type="text" name="color" id="color" required="required" size="30"></label></div>
<label>Hukommelse:
<div>
<select size="1" name="memory" id="memory">
<option>8GB</option>
<option>16GB</option>
<option>32GB</option>
<option>64GB</option>
<option>128GB</option>
</select>
</div>
</label>
<div><label>Skærmstørrelse <input type="number" name="displaysize" id="displaysize" min="0" step="0.1" size="30"></label></div>
<div><label>Produktbillede: <input type="file" name="productphoto" id="productphoto" required="required" size="30"></label></div>
</fieldset>
<div><input type="submit" id="ok" value="Indsend"><input type="reset" id="nulstil" value="Nulstil"></div>
</form>
</body>
</html>
process.php - 正在保存 index.html 中的条目的页面。
<!DOCTYPE html>
<html lang="da">
<html>
<head>
<title>Mobiloversigten</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="stylesheet.css">
</head>
<body>
<div class= "logo">
<img src="Mobilsiden.png" alt="Mobilsiden Logo" style="width:20%;height:20%;">
</div>
<div class="boks">
<h1>Enheden er registreret</h1>
<div class="linie"></div><br>
<div class="centerbuttons">
<a href="index.html" class="myButton">Tilføj ny enhed</a>
<a href="overview.php" class="myButton">Vis enheder</a>
</div>
<?php
$manufactor = $_POST['manufactor'];
$product = $_POST['product'];
$color = $_POST['color'];
$memory = $_POST['memory'];
$displaysize = $_POST['displaysize'];
$productphoto = $_FILES['productphoto']['name'];
if($_FILES){
if(strlen($_FILES['productphoto']['type'])==9)
$name=$product . ".".$rest = substr($_FILES['productphoto']['type'], -3);
else
$name=$product . ".".$rest = substr($_FILES['productphoto']['type'], -4);
move_uploaded_file($_FILES['productphoto']['tmp_name'], $name);
}
$user_data = "$manufactor, $product, $color, $memory, $displaysize, $name \r\n";
$mobile_data = "Producent: ,Produktnavn: ,Farve: ,Hukommelse: ,Skærmstørrelse: ";
$fh = fopen("data.txt", "a") or die("Filen kunne ikke oprettes");
fwrite($fh, $user_data) or die("Kunne ikke skrive til filen");
fclose($fh);
$fj = fopen("mobile.txt", "w") or die("Filen kunne ikke oprettes");
fwrite($fj, $mobile_data) or die("Kunne ikke skrive til filen");
fclose($fj);
?>
</div>
</body>
</html>
overview.php - 显示之前保存的文本文件中的条目的页面。
<!DOCTYPE html>
<html lang="da">
<html>
<head>
<title>Mobiloversigt</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="stylesheet.css">
</head>
<body>
<div class= "logo">
<img src="Mobilsiden.png" alt="Mobilsiden Logo" style="width:20%;height:20%;">
</div>
<div class="boks">
<h1>Tilføjede enheder</h1>
<div class="linie"></div><br>
<?php
$info = explode(",", file_get_contents("mobile.txt"));
$retrieved_string = file_get_contents("data.txt");
$retrieved_array = explode("\n", $retrieved_string);
$count=count($retrieved_array)-1;
for($y = 0; $y < $count; $y++){
$user_data_array = explode(",",$retrieved_array[$y]);
for($x = 0; $x <= 4; $x++){
echo "<p>$info[$x]</p><p2>$user_data_array[$x]</p2><br>";
} echo "<img src=\"$user_data_array[5]\"><br><br>";
echo "<div><span class=\"linie\"></span></div><br><br>";
}
?>
</div>
</body>
</html>
我知道这是一篇很长的帖子,但我只是想确保可能的解决方案制造商对我的代码有完整的概述。我希望这不是问题。
由于我是 PHP 新手,如果可能的话,我希望得到一个更易于理解的答案:-)
提前致谢!
【问题讨论】:
-
这不是 php 问题,因为 php 执行后端并且不受浏览器选择的影响 - 它只是根据收到的请求提供输出。所以你的问题是html/css。您是否使用开发者工具检查过浏览器中的元素?
-
感谢您的评论@Tristan。不,我还没有真正做到这一点,因为我还没有完全进入 Safari 的那部分。然而。我可以看到,当我使用 Safari 时,它会将空格添加到我的 data.txt 中,因此我的 overview.php 会从该文件中提取空格。
-
而且更奇怪的是它不会一直发生?当我现在测试它时,我没有收到错误,所以我现在真的很茫然。
-
如果您发现用户发布的数据会影响显示,那么您需要采取措施对发布的数据进行处理或验证,以确保其适用。例如,您可以在将用户在表单中输入的数据中删除 html 标签、去除空格等,然后再将其插入到文本文件中。
-
嗯,那么您究竟会建议@Tristan 什么呢?我仍然很困惑为什么我首先会得到这些空白,因为我不会在没有完全填写表格的情况下进行任何提交。Safari 只是简单地自行创建它们 - 我有一些朋友用他们的自己的代码应该或多或少与我的相同,他们遇到同样的问题。我在 Imgur 上发布了我的 data.txt 文件的屏幕截图:i.imgur.com/5ZWMfE4.jpg
标签: php html google-chrome safari