我正在尝试在提交表单时运行以下代码以创建新目录,将html文档复制到新目录,重命名html文档,并将包含html表单数据的xml保存到我们创建的有向文件中。这些都没有发生,但是我没有收到任何错误。到目前为止,我已经花了数小时对它进行故障排除,但仍然看不到任何错误。
这是PHP脚本(抱歉,格式较差,只是无法干净地粘贴):
<?php
if(isset($_POST['submit'])) {
error_reporting(1);
ini_set('display_errors', 'On');
$name = $_POST["name"];
$address = $_POST["address"];
$photo = $_POST['photo'];
mkdir("/kunden/homepages/9/d773272021/htdocs/articles/$name", 0755);
chdir("/kunden/homepages/9/d773272021/htdocs/articles/$name");
copy("/kunden/homepages/9/d773272021/htdocs/input.html", "/kunden/homepages/9/d773272021/htdocs/articles/$name");
rename("/kunden/homepages/9/d773272021/htdocs/articles/$name/input.html", "/kunden/homepages/9/d773272021/htdocs/articles/$name/$name . '.html'");
//XML Data In Documents
$xmlString = "<?xml version='1.0' encoding='UTF-8'?>
<name>$name</name>
<address>$address</address>
<photo>$photo</photo>
";
//The above
$dom = new DOMDocument;
$dom->preserveWhiteSpace = TRUE;
$dom->loadXML($xmlString);
$dom->save("/kunden/homepages/9/d773272021/htdocs/articles/$name" . '.xml');
}
?>
以下是HTML表单的代码(它可以正常运行并运行PHP脚本,但我想我也应该包括它,以防万一):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Article Creation Wizard (Beta)</title>
</head>
<body>
<form method="post" action="output.php">
Name: <input type="text" name="name"><br>
Address: <input type="text" name="address" /><br>
Photo: <input type="file" name="photo" /><br>
<input type="submit">
</form>
</body>
</html>
谢谢。
编辑: 有用!有点...这是我的新脚本:
<?php
if(isset($_POST)) {
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$name = $_POST["name"];
$address = $_POST["address"];
$photo = $_POST['photo'];
mkdir("articles/$name", 0755, true);
copy('/homepages/9/d773272021/htdocs/input.html', "/homepages/9/d773272021/htdocs/articles/$name/");
rename("/homepages/9/d773272021/htdocs/articles/$name/input.html", "/homepages/9/d773272021/htdocs/articles/$name/$name.html");
//XML Data In Documents
$xmlString = "<?xml version='1.0' encoding='UTF-8'?>
<name>$name</name>
<address>$address</address>
<photo>$photo</photo>
";
//The above
$dom = new DOMDocument;
$dom->preserveWhiteSpace = TRUE;
$dom->loadXML($xmlString);
$dom->save("articles/$name.xml");
}
?>
创建目录和XML文件,这很棒。但是,HTML不会被复制,因此也不会被命名为其新名称。
这是我遇到的错误,感谢您的帮助:
Warning: copy(): The second argument to copy() function cannot be a directory in /homepages/9/d773272021/htdocs/output.php on line 10
Warning: rename(/homepages/9/d773272021/htdocs/articles/cancer/input.html,/homepages/9/d773272021/htdocs/articles/cancer/cancer.html): No such file or directory in /homepages/9/d773272021/htdocs/output.php on line 11
Warning: DOMDocument::loadXML(): Extra content at the end of the document in Entity, line: 3 in /homepages/9/d773272021/htdocs/output.php on line 21
答案 0 :(得分:1)
首先,由于报告-1,您不会得到所有错误, 将以下内容添加到顶部以获取所有正确的错误;
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
第二点是您的xml字符串格式不正确。 1.0和UTF-8不在字符串中,请使用以下内容;
$xmlString = "<?xml version='1.0' encoding='UTF-8'?>
<name>$name</name>
<address>$address</address>
<photo>$photo</photo>
";
第三,您正在检查应通过邮寄请求发送的提交值,但是在邮递请求进行快速var dump之后,没有$_POST["submit"]
值从未设置过,因此如果,这是您不会收到错误的另一个原因。
使用if(isset($_POST)) {
代替if(isset($_POST['submit'])) {
,我认为新的DOMDocument是一个类,因此应使用()进行调用。
这样做$dom = new DOMDocument();
而不是$dom = new DOMDocument;
在我给您的提示后,它应该可以使用,但不能使用,因为我没有您要访问的文件夹。我的代码错误可以在下面的链接中查看
答案 1 :(得分:0)
尝试新的
new DOMDocument();
并激活
error_reporting(E_ALL);