困扰了2天的$_POST传值,帮个忙吧。

gxpotato 2006-07-29 04:25:34
最近因为朋友要求,帮忙做个可以自由发布MP3或者WMA的PHPWIND插件,每次扣除一定的虚拟货币。其实,很简单也就是填个表单,上传一个文件。就没有了,但是,关于表单的提交一直都是不明白机制,胆战心惊的说。不是每次都成功,极度的郁闷。接触PHP只有几天的时间,对PHP的很多东西都不了解,多多见谅。只有两个文件,内容如下:


musicMoney.php,用于填写发布的信息,内容如下:
<?php
require_once('global.php');
require_once(R_P.'require/header.php');
//echo $winduid;
if($groupid=='guest' || $money<100 )
{
Showmsg("你未符合使用本功能的条件!");
//echo "<script>alert('未登录不能使用本功能!');location.href='login.php';</script>";
}
else
{
?>
<form enctype='multipart/form-data' action='musicProcess.php' method='POST'>
<table width='429' border='0' cellspacing='0' cellpadding='0' align='center'>
<caption align='left'>        歌曲点播<br />
</caption>
<tr colspan='2'><td width='67' height=24> </td>
</tr>
<tr>
<td align='right' valign='middle'>歌曲名:</td>

<td width='362' align='left' valign='middle'><input name='music_Name' type='text'></td>
</tr>
<tr>
<td align='right' valign='middle'>演唱者:</td>
<td align='left' valign='middle'><input name='music_Article' type='text'></td>
</tr>
<tr>
<td align='right' valign='top'>祝 词:</td>
<td align='left' valign='top'>
<textarea name='music_Content' cols='40' rows='6'></textarea>
<br> 这里可以填写谁点播给谁等等,最好不要使用半角的标点符号。 </td>
</tr>
<tr>
<td align='right' valign='top'>文 件:</td>
<td align='left' valign='top'>
<!-- MAX_FILE_SIZE must precede the file input field -->
<input type='hidden' name='MAX_FILE_SIZE' value='8388608'>
<!-- Name of input element determines name in $_FILES array -->
<input name='user_file' type='file'>
</br>
<p>文件必须小于8MB! </p></td>
</tr>
<tr>
<td align='right' valign='top'> </td>
<td align='left' valign='middle'><br><input name='submit' type='submit' value='提 交' /> 
 

<input type='reset' name='Submit' value='重 置' /></td>
</tr>
<tr>
<td align='right' valign='top'> </td>
<td align='left' valign='top'><br /><font color=red >注意:<br />文件格式只支持MP3和WMA! <br />任何试图上传非许可类型文件均扣除50XB.<br />推荐上传 <b>WMA </b>格式的文件,因为比较小,不容易出错.谢谢合作.</font> </td>
</tr>
</table>
</form>
<?
}

footer();
?>

文件musicProcess.php用于进行表单的处理:
<?php
require("global.php");
require_once(R_P.'require/header.php');

$musiCost=100;//每次的花费。
$musciError=40;//错误文件类型进行的处罚。
$fileCheck=false;//文件检查
//import_request_variables("gp", "xy_");

$music_Name=$_POST['music_Name'];
$music_Article=$_POST['music_Article'];
$music_Content=$_POST['music_Content'];

$music_Name=Char_cv($music_Name);
$music_Article=Char_cv($music_Article);
$music_Content=Char_cv($music_Content);

//print_r($_FILES);

if($groupid=="guest" || $money<$musiCost)
{
Showmsg("你尚未达到使用本功能的条件,1、未正常登录 2、小于".$musiCost."XB。");
}



else
{
if($music_Name || $music_Content)
{
echo "<script>alert('出现以下错误:\\n1、歌曲名称为空。 \\n2、祝词为空。\\n');history.go(-1);</script>";
}
else
{
$realFileName=time();//用时间秒数产生文件名


/////////////////////日志记录//////////////////
$logFile=file_get_contents ("plugins/logs/log.txt");
$logff=$winduid."|".$windid."|".$music_Name."|".$music_Article."|".$music_Content."|".get_date($timestamp,"Y-m-d H:i:s")."|".$realFileName."\n".$logFile;
file_put_contents("plugins/logs/log.txt",$logff);


//echo $music_Name;
///////////过滤一些敏感的JAVASCRIPT字符///////////
$music_Name=str_replace("," ,",",$music_Name);
$music_Article=str_replace("," ,",",$music_Article);
$vowels = array("\r","\n","~","^");
$music_Content=str_replace($vowels,"",$music_Content);
$music_Content=str_replace("," ,",",$music_Content);
$uploaddir = 'plugins/musics/';

if(eregi("\.(wma)$",$_FILES['user_file']['name'])) //检查是否wma文件
{
$musicUrl=$realFileName.'.wma';
$uploadfile=$uploaddir.$realFileName.'.wma';
$fileCheck=true;
}
if(eregi("\.(mp3)$",$_FILES['user_file']['name'])) //检查是否mp3文件
{
$musicUrl=$realFileName.'.mp3';
$uploadfile=$uploaddir.$realFileName.'.mp3';
$fileCheck=true;
}

if($fileCheck) //eregi("\.(wma|mp3)$",$_FILES['user_file']['name']))
{

if (move_uploaded_file($_FILES['user_file']['tmp_name'], $uploadfile)) //我的PHP版本是5.0的,所以用move_uploaded_file函数。
{

$musicSaid="mkList(\"plugins/musics/".$musicUrl."\",\"[MusicBox]-[".$musicName."]";
if($music_Article=="")
{
$musicSaid=$musicSaid."--".$music_Content.".[".$windid." on ".get_date($timestamp,"Y-m-d H:i:s")."]\");";
}
else
{
$musicSaid=$musicSaid."-[".$music_Article."]"."--".$music_Content.".[".$windid." on ".get_date($timestamp,"Y-m-d H:i:s")."]\");";
}

$musicSaid=str_replace("'" ,"‘",$musicSaid);
$musicSaid=str_replace("!" ,"!",$musicSaid);
$musicSaid=str_replace("^" ,"",$musicSaid);

//把歌曲路径写入列表文件
$file=file_get_contents ("plugins/exobud/exobudpl.js");
$ff=$musicSaid."\n".$file;
file_put_contents("plugins/exobud/exobudpl.js",$ff);

//扣除虚拟货币
$money=$money-$musiCost;
$db->update("UPDATE pw_memberdata SET money=".$money." WHERE uid='".$winduid."'");
Showmsg("你的祝福及歌曲已经全部处理完毕. 本次操作扣除".$musiCost." XB.");
}
else
{
Showmsg("文件上传错误,请检查文件大小是否<8MB!");
//echo "<script>alert('文件上传错误,请检查文件大小是否<8MB!');history.go(-1);</script>";
}
}else
{
$money=$money-$musciError;
$db->update("UPDATE pw_memberdata SET money=".$money." WHERE uid='".$winduid."'");
Showmsg("文件上传错误,请检查文件格式(仅支持MP3/WMA)! 本次操作扣除 $musciError XB.");
}

}

}

footer();

?>



现在的问题是:
$music_Name=$_POST['music_Name'];
$music_Article=$_POST['music_Article'];
$music_Content=$_POST['music_Content'];

根本取不到值,而且$_FILES里面也是空的。和register_globals关系不大,我又不是直接用变量。这两天内火都大了一些,我承认我接触PHP只有3天时间,光是这个表单就搞了2天,欲哭无泪啊。。
...全文
328 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxpotato 2006-08-01
  • 打赏
  • 举报
回复
也有可能是配置文件的问题,上面的程序在别人的机器是正常的.在服务器上就有这个问题.
gxpotato 2006-08-01
  • 打赏
  • 举报
回复
PHP 版本是5.0的.

另外这个问题我已经解决了......

表单的第一个值,经过我的1个下午的测试,表单的第一个值绝对取不出来.不清楚原因.现在我在表单的最前面加了一个hidden,现在功能一切正常了.

谢谢,大家.
lantersen 2006-07-31
  • 打赏
  • 举报
回复
1:根本取不到值,//你可以按到手册上的设置你的FORM
2:而且$_FILES里面也是空的。和register_globals关系不大,//最好是registe_global = On
3:我又不是直接用变量。这两天内火都大了一些,我承认我接触PHP只有3天时间,光是这个表单就搞了2天,欲哭无泪啊。//一切都会好起来的,相信你行的,呵
kabakaba 2006-07-31
  • 打赏
  • 举报
回复
lz的代码没有错误啊~mark!
ten789 2006-07-31
  • 打赏
  • 举报
回复
好长的代码 楼主的用法没错 写个简单的测试下更好找到问题
klend 2006-07-31
  • 打赏
  • 举报
回复
如果已经打开全局变量的话$music_Name就已经可以取到值了
所以不应该$music_Name=$_POST['music_Name'];这么用了
试一下$m_N=$_POST['music_Name'];或者直接echo $music_Name看看
xuzuning 2006-07-31
  • 打赏
  • 举报
回复
php版本号?
wenyisi 2006-07-31
  • 打赏
  • 举报
回复
我一开始搞上传也是不知道为什么读取不到本地文件名,郁闷死了,但是在别人的机子上可以,应该是配置文件的问题,建议楼主到别的机子上试试好了
颓废的老猫 2006-07-31
  • 打赏
  • 举报
回复
楼主,建议你另外写一个简单的表单和测试代码,先试试。
成功后再将其他代码一块一块的加上去,这样比较容易找出错误。

另:我觉得 registe_global最好设置成off
以前我跟同事一起做一个网站的时候,发现总是有一个变量没有值,后来查了很久才发现我同事在session中的变量和我的变量重名了。
zeroleonhart 2006-07-29
  • 打赏
  • 举报
回复
<input name="music_Name" type="text">
Yaba_lx 2006-07-29
  • 打赏
  • 举报
回复
$_REQUEST["music_Name"];

这样试试 好使不?

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧