我正在尝试向自己提交一个php表单但在提交页面后返回页面的源代码而不是处理过的数据。
我有一个issset来检查表单是否已经提交,然后在同一页面上有函数来处理提交的数据。
以下是代码:
if(isset($_POST['submit'])){ if ($_POST['name' == 'px']) { $pxValue = $_POST['value']; $value = convertToEm($pxValue); } if ($_POST['name' == 'em']) { $emValue = $_POST['value']; $value = convertToPx($emValue); } function convertToEm($value) { $base_font = 16; $em_value = $value / $base_font; return $em_value; } }
以下是表格:
<form action="" id="converterPx" method="POST">
<h3>Convert Pixels to Ems:</h3>
<label>PX:</label>
<input type="text" name="value" value="" />
<?php echo 'Result:'. $value; ?>
<input type="hidden" name="type" value="px" />
<input type="submit" name="submit" id="submit-px" />
</form>
尝试在同一页面上处理表单
使用浏览器检查器,我看到POST提交了值。
对此有任何帮助都很棒
答案 0 :(得分:1)
如果PHP源出现在返回的页面上,则可能是因为您忘记了标记
或者因为服务器没有配置为正确执行PHP
(或文件名的扩展名错误)
答案 1 :(得分:1)
要在同一页面中执行自我操作,请在表单操作中使用此操作$ _SERVER ['REQUEST_URI']
//这是您问题的确切答案代码
<?php
if(isset($_POST['submitBtn'])){
function convertToEm($value) {
$base_font = 16;
$px_value = $value/$base_font;
return $px_value;
}
function convertToPx($value) {
$base_font = 32;
$em_value = $value/$base_font;
return $em_value;
}
if (isset($_POST['type']) && $_POST['type']=='px') {
$pxValue = $_POST['value'];
$value = convertToEm($pxValue);
}
if (isset($_POST['type']) && $_POST['type'] == 'em') {
$emValue = $_POST['value'];
$value = convertToPx($emValue);
}
}
//form data
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" id="converterPx" method="POST">
<h3>Convert Pixels to Ems:</h3>
<label>PX:</label>
<input type="text" name="value" />
<?php echo 'Result:'.$value; ?>
<input type="hidden" name="type" value="px" />
<input type="submit" name="submitBtn" id="submit-px" />
</form>
答案 2 :(得分:1)
这是代码中的拼写错误,您使用了名称而不是类型
if ($_POST['type']== 'px') {
$pxValue = $_POST['value'];
$value = convertToEm($pxValue);
}
if ($_POST['type'] == 'em') {
$emValue = $_POST['value'];
$value = convertToPx($emValue);
}
答案 3 :(得分:0)
$_POST['name' == 'px']
应该是$_POST['name'] == 'px']
(对类似的构造进行了类似的更改)。
您正在尝试将两个字符串(将为false)之间的比较结果用作数组索引。
答案 4 :(得分:0)
您是否忘记了<?php ?>
代码? $_POST['name' == 'px']
也应该是$_POST['name'] == 'px'
,缺少convertToPx函数,你的表单上没有名为param的param,并且你没有回应任何东西。
<?php if(isset($_POST['submit'])){
if ($_POST['name']== 'px') {
$pxValue = $_POST['value'];
$value = convertToEm($pxValue);
}
if ($_POST['name'] == 'em') {
$emValue = $_POST['value'];
$value = convertToPx($emValue);
}
function convertToEm($value) {
$base_font = 16;
$em_value = $value / $base_font;
return $em_value;
}
function convertToPx($value) {
$base_font = 32;
$em_value = $value / $base_font;
return $em_value;
}
echo $value;
}
?>
答案 5 :(得分:0)
您没有提交 self ,而是提交没有:
<form action="" id="converterPx" method="POST">
编辑:正如劳伦斯指出的那样,应该避免使用我最初描述的方法。相反,请使用$_SERVER['SCRIPT_NAME'];
,有关详细信息,请参阅http://www.webadminblog.com/index.php/2010/02/23/a-xss-vulnerability-in-almost-every-php-form-ive-ever-written/
原始:根据您调用表单的方式,您可以尝试:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" id="converterPx" method="POST">
此处有更多详情:http://www.html-form-guide.com/php-form/php-form-action-self.html