【问题标题】:Why isn't my php file getting executed in my 2 tier application?为什么我的 php 文件没有在我的 2 层应用程序中执行?
【发布时间】:2016-02-18 17:23:09
【问题描述】:

为什么我的 php 文件没有在我的 2 层应用程序中执行?

HTML 代码

<form autocomplete='on' name='form1' method='get'action='new_Assignment1.php'>
<table>
<tr>
<td>Username:</td><td><input type='textbox' name='usrname' maxlength='10'></td></tr>
<tr><td>First name:</td><td><input type='textbox' name='fname'></td></tr>
<tr><td>Last name:</td><td><input type='textbox' name='lname'></td></tr>
<tr><td>Age:</td><td><input type='number' name='age'   min='18' max='65' style='float:left;'></td></tr>
<tr><td>Empno:</td><td><input type='number' name='eno' min='10' step='2'style='float:left;'></td></tr>
<tr><td>Submit a file:</td><td><input type='file' formenctype='multipart/formdata' name='upfile'></td></tr>
<tr><td><input type='checkbox' name='terms' value='Tnc' checked>Terms & Conditions</td></tr>
<tr><td>Google Search:</td><td><input type='search' name='google' style='float:left;'></td></tr>
<tr><td><input type='submit'/></td></tr>
<tr><td><input type='submit' value='Click me' disabled /></td></tr>
</table>
</form>

PHP 代码

<?php
$var_1=$_REQUEST['usrname'];
$var_2=$_REQUEST['fname'];
$var_3=$_REQUEST['lname'];
$var_4=$_REQUEST['age'];
$var_5=$_REQUEST['eno'];
$var_6=$_REQUEST['file'];
$var_7=$_REQUEST['google'];
echo $var_1;
echo $var_2;
echo $var_3;
echo $var_4;
echo $var_5;
echo $var_6;
echo "You have searched"echo $var_7"."
if($var_7='Tnc')
{
"Agreed to terms and conditions.";
}
else
{
"Not agreed to terms and conditions.";
}
?>

HTML 文件的输出

在提交 HTML 文件时输出 PHP 文件

我不明白为什么我的 php 文件没有被调用?

【问题讨论】:

  • 您尝试引用图片,但没有链接。所以...有点难以弄清楚这里出了什么问题。 terms 也没有数组。
  • html文件的输出是第一张图片
  • 那么你有 upfile 作为名称属性,但使用 $_REQUEST['file'] 并且你必须使用 POST 方法来处理文件。不使用 GET 处理文件。所以我称之为未定义的索引重复。而这个formenctype='multipart/formdata' 属于形式,而不是输入。但也缺少一个空格form enctype='multipart/formdata',但这属于&lt;form&gt;和一个post方法。
  • 可能是因为您的表单方法和表单操作之间缺少空格?
  • 建议将您的两个文件放在同一位置(可能在同一位置或同一文件夹)。并把enctype='multipart/formdata'&lt;form放在一起,而不是Submit a file。还要在&lt;?php 之后的 php 文件中添加error_reporting(E_ALL);ini_set('display_errors',1); 并检查一次。还要在表单方法和表单动作之间留一个空间

标签: php html


【解决方案1】:

你的 php 代码是否包含在 new_Assignment1.php 中,如果不是,那就是你的问题所在。在 Assignment1.php 中也不是大写 A。链接是区分大小写的,尤其是在实时服务器上。

您的错误是“找不到此网页”,这意味着您正在发布到一个不存在的页面。

【讨论】:

  • 这是一个很好的观点,我注意到你在 cmets 中写过,并且我也会提到这一点。然而,这不是他们最大的问题,他们的代码中有很多错误。我同意;在 * NIX 系统上,File.xxxfile.xxx 完全是两种不同的动物。
  • 该文件可能根本不存在,或者它可能存在于不同的位置/目录中。请检查!
  • 哦,现在它进行了投票。再次......不要和你一起开采TBH
  • 啊奇怪,没注意到有人倒下然后点赞:-)
  • 人也可以是奇怪的动物 ;-) 然而,web page is not found 让我感到困惑。我更倾向于他们没有正确访问该文件,这是我在靠近底部的答案中添加的。那和“404”完全是两种不同的动物。
【解决方案2】:

HTML 代码:

<form  name='form1' method='POST'action='viewuser.php' enctype="multipart/form-data">
<table>
<tr>
<td>Username:</td><td><input type='textbox' name='usrname' maxlength='10'></td></tr>
<tr><td>First name:</td><td><input type='textbox' name='fname'></td></tr>
<tr><td>Last name:</td><td><input type='textbox' name='lname'></td></tr>
<tr><td>Age:</td><td><input type='number' name='age'   min='18' max='65' style='float:left;'></td></tr>
<tr><td>Empno:</td><td><input type='number' name='eno' min='10' step='2'style='float:left;'></td></tr>
<tr><td>Submit a file:</td><td><input type="file" name="file"/></td></tr>
<tr><td><input type='checkbox' name='terms' value='Tnc' checked>Terms & Conditions</td></tr>
<tr><td>Google Search:</td><td><input type='search' name='google' style='float:left;'></td></tr>
<tr><td><input type='submit' value='submit'/></td></tr>
<tr><td><input type='submit' value='Click me' disabled /></td></tr>
</table>
</form>

PHP 代码

<?php
$var_1=$_REQUEST['usrname'];
$var_2=$_REQUEST['fname'];
$var_3=$_REQUEST['lname'];
$var_4=$_REQUEST['age'];
$var_5=$_REQUEST['eno'];
$var_6=$_FILES['file']['name'];
$var_7=$_REQUEST['google'];
if(isset($_REQUEST['usrname']) && isset($_REQUEST['fname']) && isset($_REQUEST['lname']) && isset($_REQUEST['age']) && isset($_REQUEST['eno']) && isset($_REQUEST['google']))
{
echo "User name :".$var_1;
echo "<br>Name :".$var_2.''.$var_3;
echo "<br>age :".$var_4;
echo "<br>Emp No :".$var_5;
echo "<br>File Name :".$var_6;
echo "<br> You have searched".$var_7;
if($var_7='Tnc')
{
"Agreed to terms and conditions.";
}
else
{
"Not agreed to terms and conditions.";
}
}
else
{
    echo "Please  Check you are missing some parameter";

}
?>

输出

【讨论】:

  • 您对此 100% 确定吗?你知道你的答案会失败,原因有很多。
  • 我在我的本地服务器中运行它的工作。您需要更改“Viewuser.php”。
  • @Fred-ii-是的,我知道
  • 如果你知道它会失败,那你为什么不修复它?
  • 我现在正在解决这个问题。你能给我建议吗?
【解决方案3】:

这里有很多问题。

您有 name='upfile' 作为输入的名称属性,但使用 $_REQUEST['file'] 所以不匹配。

但是,您必须使用 POST 方法来处理文件。

不使用 GET 方法处理文件。

那么这个formenctype='multipart/formdata' 属于形式,而不是输入,而只是enctype='multipart/formdata'。但是有一个错字,应该是enctype="multipart/form-data" 加上一个连字符。

即:

<form enctype="multipart/form-data" autocomplete='on' name='form1' method='post' action='new_Assignment1.php'>

那你需要把所有$_REQUEST改成$_POST

但是对于文件,它需要读为$_FILES

并使用:

$var_6=$_FILES['upfile']['name'];

参考:

旁注:没有关于您希望如何处理该文件的指示。

如果打算将其保存到文件夹,那么您需要使用move_uploaded_file() 并确保您要上传到的文件夹具有适当的权限。

手册中有一个关于如何处理上传文件的示例:

另外,你没有为&lt;input type='checkbox' name='terms' value='Tnc' checked&gt; 设置数组,所以不确定你想如何处理它。

error reporting 添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:显示错误应该只在暂存阶段完成,而不是在生产阶段。

正如 cmets (和答案)中所述,该评论似乎已被删除并转录为答案。

  • 找不到网页可能意味着您可能没有找到正确的文件。

在 * NIX 系统上,FILE.xxxFile.xxxfile.xxx 不同,因为它们区分大小写,与 Windows 平台不同。

或者您正在通过网络浏览器以c:///folder/file.xxx 而不是http://localhost/folder/file.xxx 访问PHP。

如果您没有安装网络服务器/PHP,那么您将无法处理 PHP 指令,如果是这种情况的话。

编辑:

哦,你有一个缺少的结束分号:

echo "You have searched"echo $var_7"."

仅此一项就会导致解析语法错误。

那么if($var_7='Tnc')你是在分配而不是比较if($var_7 =='Tnc')

一个= 是一个作业。两个== 是比较,三个=== 是“相同的”。

关于这些,请在 Stack 上查阅以下内容:

【讨论】:

  • 本意是在php文件中显示上传的文件
  • @Taylor 这是一种完全不同的动物。你需要另一段代码来做到这一点。你打算如何展示它?正如我在回答中指出的那样,我已经用您在原始问题中发布的内容涵盖了我所能做的一切。显示图像超出了这个问题的范围。
  • @Taylor 如果要在处理后显示文件,请参阅stackoverflow.com/q/21703154stackoverflow.com/a/16285454,正如我所说;超出了您的问题范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 2021-01-06
  • 2015-09-03
  • 2020-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多