为每次提交创建新页面-PHP错误

为每次提交创建新页面-PHP错误,php,mysql,html,Php,Mysql,Html,是网站 我有一个提交页面和一个表单操作,该页面将提交信息查询到我的数据库中。我将在下面包含该代码。我想做的是,让它为每次提交创建一个单独的页面。然而,当我尝试上传时,我得到了大量的错误。它上传,但肯定不会创建新页面。我有一个模板表单,我将向您展示,但首先,这里是上载页面: <?php // For use in creating individual page $tpl_file = "submission.php"; $tpl_path = "/~lyons/templates/"; $

是网站

我有一个提交页面和一个表单操作,该页面将提交信息查询到我的数据库中。我将在下面包含该代码。我想做的是,让它为每次提交创建一个单独的页面。然而,当我尝试上传时,我得到了大量的错误。它上传,但肯定不会创建新页面。我有一个模板表单,我将向您展示,但首先,这里是上载页面:

<?php
// For use in creating individual page
$tpl_file = "submission.php";
$tpl_path = "/~lyons/templates/";
$submissions_path = "/~lyons/submissions";


// For use in querying submitter name

$username = $_GET['username'];
session_start();
$_SESSION['username'] = $username; 

//Database Information

$dbhost = "";
$dbname = "";
$dbuser = "";
$dbpass = "";

//Connect to database

mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
mysql_select_db($dbname) or die(mysql_error());


$name = $_POST['name'];
$filename = $_POST['filename'];   
$submitter = $username;
list($width, $height) = getimagesize("$filename");
$type = exif_imagetype($_POST['filename']);

$checkuser = mysql_query("SELECT filename FROM images WHERE filename='$filename'");

$filename_exist = mysql_num_rows($checkuser);

if($filename_exist > 0){
    echo "I'm sorry but this image has already been submitted. Please feel free to try another.";
    unset($filename);
    include 'upload.php';
    exit();
}


if (exif_imagetype($_POST['filename']) == IMAGETYPE_GIF) {
    echo "Sorry, but we can't accept GIFs. Please feel free to try uploading another.";
    unset($filename);
    include 'upload.php';
    exit();
}



$query = "INSERT INTO images (name, filename, submitter, width, height, type)
VALUES('$name', '$filename', '$submitter', '$width', '$height', $type)";
mysql_query($query) or die(mysql_error());
mysql_close();

echo "Thanks for your submission!<br/> Upload another <a href='/~lyons/upload.php'>here</a>!";

$placeholders = array("{name}", "{filename}", "{username}");
$tpl = file_get_contents($tpl_path.$tpl_file);
$new_member_file = str_replace($placeholders, $data, $tpl);
$php_file_name = $username.".php";

$fp = fopen($submissions_path.$php_file_name, "w");
fwrite($fp, $new_submission_file);
fclose($fp); 
?>

若要帮助您进行调试,请尝试打开错误报告和错误显示

// add after <?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
我认为您的路径不正确,很可能需要更改以下两行以使用完整路径

// change
$tpl_path = "/~lyons/templates/";
$submissions_path = "/~lyons/submissions";

// to
$tpl_path         = $_SERVER['DOCUMENT_ROOT'] . "/~lyons/templates/";
$submissions_path = $_SERVER['DOCUMENT_ROOT'] . "/~lyons/submissions";

当你打开文件时,它试图打开
/~lyons/templates/
,这是一个不存在的目录,它可能类似于
/home/lyons/public\u html/templates/
/home/something/public\u html/~lyons/templates
/usr/local/apache2/htdocs/~lyons/templates
等['DOCUMENT\u ROOT']
应填写正确的值,但在少数情况下,您可能需要手动设置正确的路径,并将其前置到$tpl\u路径和$submissions\u路径。

若要帮助您调试,请尝试打开错误报告和错误显示

// add after <?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
我认为您的路径不正确,很可能需要更改以下两行以使用完整路径

// change
$tpl_path = "/~lyons/templates/";
$submissions_path = "/~lyons/submissions";

// to
$tpl_path         = $_SERVER['DOCUMENT_ROOT'] . "/~lyons/templates/";
$submissions_path = $_SERVER['DOCUMENT_ROOT'] . "/~lyons/submissions";

当你打开文件时,它试图打开
/~lyons/templates/
,这是一个不存在的目录,它可能类似于
/home/lyons/public\u html/templates/
/home/something/public\u html/~lyons/templates
/usr/local/apache2/htdocs/~lyons/templates
等['DOCUMENT\u ROOT']应填写正确的值,但在少数情况下,您可能需要手动设置正确的路径,并将其前置到$tpl\u路径和$submissions\u路径。

看起来您可能有路径问题。当您使用路径“/~lyons”时,您可能没有指向所需的目录。请尝试进行以下更改:

// For use in creating individual page
$tpl_file = "submission.php";
//$tpl_path = "/~lyons/templates/";
$tpl_path = "templates/";

然后,请发布新的错误消息(如果有)。

看起来您可能有路径问题。使用路径“/~lyons”时,您可能没有指向所需的目录。请尝试进行以下更改:

// For use in creating individual page
$tpl_file = "submission.php";
//$tpl_path = "/~lyons/templates/";
$tpl_path = "templates/";


然后请发布新的错误消息(如果有)。

您能提供您收到的错误吗?警告:file_get_contents(/~lyons/templates/submission.php)[function.file get contents]:无法打开流:第62行的/home/lyons/public_html/uploadimages.php中没有这样的文件或目录警告:fopen(/~lyons/submissions.php)[function.fopen]:无法打开流:第66行的/home/lyons/public_html/uploadimages.php中没有此类文件或目录警告:fclose():提供的参数不是第68行/home/lyons/public_html/uploadimages.php中的有效流资源submission.php在哪里相对于uploadimages.php?uploadimages.php位于public_html中,而submission.php位于名为“templates”的文件夹中(位于public_html中)这可能是一个路径问题。请参阅下面的答案。您能提供您得到的错误吗?警告:file_get_contents(/~lyons/templates/submission.php)[function.file get contents]:无法打开流:第62行的/home/lyons/public_html/uploadimages.php中没有这样的文件或目录警告:fopen(/~lyons/submissions.php)[function.fopen]:无法打开流:第66行的/home/lyons/public_html/uploadimages.php中没有此类文件或目录警告:fclose():提供的参数不是第68行/home/lyons/public_html/uploadimages.php中的有效流资源submission.php在哪里相对于uploadimages.php?uploadimages.php位于public_html中,而submission.php位于名为“templates”的文件夹中(位于public_html中)这可能是一个路径问题。请参阅下面我的答案。只是为了防止来自php的错误消息输出到屏幕上,因为错误正在由if语句处理。一些主机在生产中保留显示错误,如果打开失败,它将阻止该信息显示给用户。啊!您不也是这样做的吗?回显n无条件地向用户发送错误?如果同一个主机将默认0设置为
track\u errors
,该怎么办?这是一个示例,显示他处理打开的文件,我不期望,甚至希望他在生产中使用准确的代码。如果您将其作为示例发布,您怎么会不期望呢?我无法理解您的逻辑。设置“display\u errors”是否退出够了吗?只是为了防止来自php的错误消息被输出到屏幕上,因为错误是由if语句处理的。一些主机在生产中保留display_错误,如果打开失败,它将阻止该信息显示给用户。呃!您不是也这样做了吗?无条件地向用户回显错误?如果同一位主持人将
跟踪错误设置为默认值0怎么办?这是一个示例,显示他处理打开的文件,我不期望,甚至希望他在生产中使用准确的代码。如果你将其作为示例发布,你怎么会不期望呢?我无法理解你的逻辑。设置“显示错误”还不够吗?下面是我每天更改的内容要做的事情:
$tpl\u file=“submission.php”$tpl\u path=“templates/”;$submissions\u path=“submissions/”;
它不再给我任何错误,但仍然无法在提交中创建页面。有什么想法吗?感谢迄今为止的帮助。我想我们可以确定这是一个路径问题;您没有指向相对路径,因此文件实际上不存在。现在,我想知道权限。您确定您的脚本可以重新创建吗d并写入您正在处理的目录?如果您在*nix系统上,使用
ls-la
,您将在左侧看到权限。格式为
drwxrwx
,任何o中都可能出现减号
-