困扰了2天的$_POST传值,帮个忙吧。
最近因为朋友要求,帮忙做个可以自由发布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天,欲哭无泪啊。。