PHP实现简单人品测试小程序:原理与代码解析
介绍如何利用PHP语言结合简单的数学哈希算法,开发一个基于姓名的趣味性格或运气测试网页。该程序通过计算输入字符串的字节值总和,映射到不同的人格评语区间。
项目概述与设计思路
这是一个经典的PHP入门级趣味脚本,旨在展示服务器端如何处理HTTP GET请求并动态生成HTML内容。程序的核心逻辑在于将不可预测的用户输入转化为一个确定性的数值结果,再通过条件判断输出对应的幽默评语。
核心算法逻辑
- 数据获取:从URL参数中读取用户输入的姓名。
- 数据处理:对姓名中的每个字符进行ASCII码转换并累加。
- 得分计算:使用公式
(sum * 47 + 70) % 100将累加值压缩到0-99之间,保留100分为特殊彩蛋。 - 结果映射:根据最终得分落入的不同区间(如0-5, 6-10... 80-85),返回预设的文本评价。
代码实现步骤
第1步:构建HTML表单界面
目的:提供用户输入入口。使用GET方法提交数据,确保姓名直接显示在浏览器地址栏,方便用户分享结果链接。
<form method="GET">
输入你的姓名来算算你的人品:
<input type="text" name="name" maxlength=12 class=input>
<input type=submit name="submit" value="我来看看" class=btn>
<input type=reset name="reset" value="还是算了" class=btn>
</form>
同时定义基础CSS样式美化按钮和输入框:
<style type="text/css">
.btn{background:#fff; color:#005681;border-width:1px;padding-left:15px;padding-right:15px;vertical-align:middle}
.input{border:solid 1px #B6D9E3;padding:2px 0px 2px 1px;font-size:1.0em;vertical-align:middle}
</style>
第2步:编写PHP后端处理函数
目的:接收参数、执行计算并输出HTML结果。以下是完整的PHP业务逻辑代码,可直接嵌入HTML文件中:
<?php
/*
* 人品计算器逻辑
*/
function js(){
// 1. 获取并清洗输入
$name = $_GET['name'];
$name = htmlspecialchars($name); // 防止XSS攻击
echo "你的大名是:<font color=red>".$name."</font><br/><br/>";
// 2. 计算字符ASCII码总和
$a = 0;
for($i = 0;$i < strlen($name); $i++){
$a += ord($name[$i]);
}
// 3. 特殊彩蛋处理
if($name=="高富帅"){
$shuzi = 100;
} else {
// 核心算法:线性同余法简化版,保证同一名字结果一致
$shuzi = ($a*47+70)%100;
}
echo $name."的得分是<font color=blue>".$shuzi."</font><br/><br/>";
// 4. 根据分数输出评语
getValue($shuzi);
}
function getValue($shuzi){
if ($shuzi == 100) {
echo "天啦!你是神!!!";
} else if ($shuzi >= 95 && $shuzi < 100) {
echo "你是世人的榜样!";
} else if ($shuzi >= 90 && $shuzi < 95) {
echo "你的人品太好了..";
} else if ($shuzi >= 85 && $shuzi < 90) {
echo "你的人品真好..做好事应该是你的爱好吧..";
} else if ($shuzi >= 80 && $shuzi < 85) {
echo "你的人品不错..应该一表人才吧?";
} else if ($shuzi >= 75 && $shuzi < 80) {
echo "你有较好的人品..继续保持..";
} else if ($shuzi >= 70 && $shuzi < 75) {
echo "有你这样的人品算是不错了..";
} else if ($shuzi >= 65 && $shuzi < 70) {
echo "你的人品勉勉强强..要自己好自为之..";
} else if ($shuzi >= 60 && $shuzi < 65) {
echo "你的人品比较差了..要好好的约束自己啊..";
} else if ($shuzi >= 55 && $shuzi < 60) {
echo "你的人品很差了..";
} else if ($shuzi >= 50 && $shuzi < 55) {
echo "你的人品太差了..?";
} else if ($shuzi >= 45 && $shuzi < 50) {
echo "你随地大小便之类的事没少干吧?";
} else if ($shuzi >= 40 && $shuzi < 45) {
echo "老实交待..";
} else if ($shuzi >= 35 && $shuzi < 40) {
echo "你拥有如此差的人品请经常祈求佛祖保佑你吧...";
} else if ($shuzi >= 30 && $shuzi < 35) {
echo "你的人品真差!";
} else if ($shuzi >= 25 && $shuzi < 30) {
echo "你的人品太差了。";
} else if ($shuzi >= 20 && $shuzi < 25) {
echo "你的人品之低下实在让人惊讶啊...";
} else if ($shuzi >= 15 && $shuzi < 20) {
echo "...";
} else if ($shuzi >= 10 && $shuzi < 15) {
echo "你应该无恶不做吧?";
} else if ($shuzi >= 5 && $shuzi < 10) {
echo "是我不好...不应该跟你谈人品问题的...";
} else if ($shuzi > 0 && $shuzi <= 5) {
echo "算了,跟你没什么人品好谈的...";
} else {
echo "你一定不是人吧?怎么一点人品都没有?!";
}
}
// 触发入口:当接收到name参数时执行计算
if(isset($_GET['name']) && $_GET['name'] != '') {
js();
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>算算你的人品BY冷枫哥哥</title>
<style type="text/css">
.btn{background:#fff; color:#005681;border-width:1px;padding-left:15px;padding-right:15px;vertical-align:middle}
.input{border:solid 1px #B6D9E3;padding:2px 0px 2px 1px;font-size:1.0em;vertical-align:middle}</style></head>
<body><center>
<form method="GET">
输入你的姓名来算算你的人品:
<input type="text" name="name" maxlength=12 class=input>
<input type=submit name="submit" value="我来看看" class=btn>
<input type=reset name="reset" value="还是算了" class=btn>
</form></center>
<p align=center>程序制作:冷枫哥哥©1.01 </p>
<?php
/* 人品计算器
作者:陈文 2007.11.22
版本:1.01
*/
function js(){
$name = $_GET['name'];
$name=htmlspecialchars($name);
echo "你的大名是:<font color=red>".$name."</font></br></br>";
for($i = 0;$i < strlen($name); $i++){
$a=$a+ord($name[$i]);
}
if($name=="高富帅"){\n\t$shuzi=100;\n}else{\n\t$shuzi=($a*47+70)%100;\n}
echo $name."的得分是<font color=blue>".$shuzi."</font></br></br>";
function getValue($shuzi){\nif ($shuzi== 0) {\n echo "你一定不是人吧?怎么一点人品都没有?!";\n} elseif (($shuzi>0)&&($shuzi<=5)) {\n echo "算了,跟你没什么人品好谈的...";\n} else if (($shuzi > 5) && ($shuzi <= 10)) {\n echo "是我不好...不应该跟你谈人品问题的...";\n } else if (($shuzi > 10) && ($shuzi <= 15)) {\n echo "你应该无恶不做吧?";\n } else if (($shuzi > 15) && ($shuzi <= 20)) {\n echo "...";\n } else if (($shuzi > 20) && ($shuzi <= 25)) {\n echo "你的人品之低下实在让人惊讶啊...";\n } else if (($shuzi > 25) && ($shuzi <= 30)) {\n echo "你的人品太差了。";\n } else if (($shuzi > 30) && ($shuzi <= 35)) {\n echo "你的人品真差!";\n } else if (($shuzi > 35) && ($shuzi <= 40)) {\n echo "你拥有如此差的人品请经常祈求佛祖保佑你吧...";\n } else if (($shuzi > 40) && ($shuzi <= 45)) {\n echo "老实交待..";\n } else if (($shuzi > 45) && ($shuzi <= 50)) {\n echo "你随地大小便之类的事没少干吧?";\n } else if (($shuzi > 50) && ($shuzi <= 55)) {\n echo "你的人品太差了..?";\n } else if (($shuzi > 55) && ($shuzi <= 60)) {\n echo "你的人品很差了..";\n } else if (($shuzi > 60) && ($shuzi <= 65)) {\n echo "你的人品比较差了..要好好的约束自己啊..";\n } else if (($shuzi > 65) && ($shuzi <= 70)) {\n echo "你的人品勉勉强强..要自己好自为之..";\n } else if (($shuzi > 70) && ($shuzi <= 75)) {\n echo "有你这样的人品算是不错了..";\n } else if (($shuzi > 75) && ($shuzi <= 80)) {\n echo "你有较好的人品..继续保持..";\n } else if (($shuzi > 80) && ($shuzi <= 85)) {\n echo "你的人品不错..应该一表人才吧?";\n } else if (($shuzi > 85) && ($shuzi <= 90)) {\n echo "你的人品真好..做好事应该是你的爱好吧..";\n } else if (($shuzi > 90) && ($shuzi <= 95)) {\n echo "你的人品太好了..";\n } else if (($shuzi > 95) && ($shuzi <= 99)) {\n echo "你是世人的榜样!";\n } else if ($shuzi == 100) {\n echo "天啦!你是神!!!";\n } else {\n echo "你的人品竟然负溢出了...我对你无语..";\n }\n}\ngetValue($shuzi);\n/*$fp=fopen("save.php","a+");\n$date=date(Y年m月d日H时i分);\n$content="<?php die();?>|".$date."|".$name."|".$shuzi."\\r\\n";\nfwrite($fp,$content);\nfclose($fp);*/\n}\nif($_GET['name']) js();\n?>
</body>
</html>运行效果如下图所示:
注意事项与维护
虽然这是一个娱乐程序,但在实际部署时建议注意以下两点:
1. XSS防护:代码中使用了 htmlspecialchars() 对输入进行处理,这能有效防止脚本注入,确保用户输入的HTML标签被转义。
2. 逻辑解耦:原代码中将 getValue 定义在 js 函数内部,这在部分PHP配置下可能导致作用域问题。上述重构代码将其提取为独立函数,增强了可维护性。
扩展思考
此类基于字符串哈希的小游戏常用于早期的社交网络互动。在现代Web开发中,如果需要更真实的随机性,通常会结合服务器端的随机种子或UUID生成策略,而非依赖固定的数学公式映射。但对于演示GET请求处理和基础逻辑判断,此方案依然是一个清晰的教学案例。
以上就是PHP实现有趣的人品测试程序实例的详细教学内容,更多关于PHP趣味编程的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









