请求的url在服务器上找不到是啥情况?
请求的 url 在服务器上找不到,这是一种常见的客户端资源访问错误。
引起这种错误的第一种原因,是客户端 url 解析器出了问题,将用户在浏览器地址栏里指定的请求,解析成了一个不存在的 url, 此时远端服务器不可能成功响应一个并不存在的服务器资源1请求。
引起这种错误的第二种原因,是客户端请求的 url 合法,但是该客户并不具有服务器上资源的访问权限,也会收到错误提示。此时可以通过管理员手动添加权限来解决。
再次强调,请记住必须通过URL来运行所有的PHP脚本;是什么意思?
php语言是一种变异语言,和html不一样的地方是因为html写了以后直接双击就可以运行,凡是php文件需要由服务器(如apache)进行处理,解释成计算机读的懂的语言,然后根据http协议在浏览器中响应,实现。通过URL的意思是说,URL是你的服务器项目根目录下的地址,访问服务器后,服务器会解释php脚本。
phpurldecode怎么用?
urlencode()编码:对字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。urldecode()解码:还原 URL 编码字符串。示例:
urlencode演示
点击连接后地址栏中汉字被编码了:http://localhost/decode.php?par=%E6%BC%94%E7%A4%BAphp-mysql------------------------------------------------------------------------php获取不到post方式提交的数据?
你把表单form的提交方法method从POST换成GET,你就能在URL清楚地看到每次提交的内容了,这样更方便新手理解.不过你也可以在浏览器提供的F12开发者工具的网络里查看到请求的GET/POST/请求头等信息.
PHP是HTML预处理器,浏览器首次加载test.php页面,服务器PHP其实并没有拿到用户提交的数据,也就是首次访问生成的HTML页面里的内联JS代码里的alert()是没有用户数据的,在你提交表单后才有,所以会出现你说的"页面JS总是获取到前一次请求的值".
最后再说个安全性问题,你的代码中,$_POST['one']是一个用户输出的数据,在你把用户输入的数据输出到页面上时,需要注意防御XSS注入,防御方法如下:
如果你是把用户输入的数据输出到
HTML上下文
中,应该这样:如果你是把用户输入的数据输出到
JS上下文
<script></script>中,应该这样:不过个人还是建议分离JS跟PHP,也就是PHP不要直接输出内容赋值给JS,这样JS代码可以单独放到一个JS文件里.
JS可以这样拿到传统表单提交里的数据并进行AJAX提交,以jQuery为例,将传统form表单提交轻松改造为AJAX提交:
可见HTML传统表单并不需要修改,JS代码里也没有混有PHP代码,编程逻辑就清晰多了.
php源码商用,如何写出难被破解的域名授权和站点限制呢?还有其他形式的授权吗?
域名授权代码可封装进函数,或者进行加密,对于常用的PHP加密形式,都有其破解的方法,比如ZendGuard、ionCube等,如果授权的域名较多,可以在项目中增加域名字段,将域名写入数据库再进行读取和校验。
工具/原料- 电脑
- PHP编程器
1、在线校验域名授权的方法,客户端代码:
1)写入客户端代码(php代码):
PHP
<?php
//获取不带端口号的域名前缀$servername = trim($_SERVER['SERVER_NAME']);
//获取服务端授权文件校验
$verifyurl = file_get_contents('http://www.abc.com/zb_users/upload/copyright.php?domain='.$servername);
if(!empty($verifyurl)){
echo "已授权!"; //授权成功
}else{
die("未授权!"); //授权失败
}
?>
2、写入服务端代码(php代码)
<?php
//获取域名$domain = $_GET['domain'];
//授权域名列表
$Array = array('127.0.0.1','localhost');
//校验结果echo in_array($domain, $Array) ? 'yes' : '';
?>
2、独立校验域名授权的方法:
(PHP代码)
<?php
function allow_domain(){
$is_allow=false;
//获取不带端口号的域名前缀
$servername=trim($_SERVER['SERVER_NAME']);
//授权域名列表
$Array=array("localhost","127.0.0.1");
//遍历数组
foreach($Array as $value){
$value=trim($value);
$domain=explode($value,$servername);
if(count($domain)>1){
$is_allow=true;
break;
} }
if(!$is_allow){
die("域名未授权!"); //授权失败
}else{
echo "域名已授权!"; //授权成功
}
}
allow_domain();
?>