最近有部分网友反应网站不能访问,但部分访问又是正常的,想研究一下怎么让用户帮忙检测网址能否访问,网站检测,网址检测
捣鼓一上午状态码,最后发现是错的,应该是返回用户客户端访问情况而不是服务器间的访问。
又是一通百度,申明我是小白所以部分没考虑到或者没想到的请忽略。
第一步:百度出使用 JS 检测网址能否正常加载
有时我们需要判断用户能否加载某些网页或服务,如 Google、Disqus 等。
而我们可以用 JavaScript 来实现这样的检测功能。
使用 JavaScript 创建一个图片,设置图片的链接为 检测网址 + favicon.ico
。
onerror
事件触发不能加载的事件,onload
事件触发可以加载的事件,并使用 setTimeout
设置超时时间。
代码:
// 新建一个图片
var img = new Image();
// 设置图片的链接
img.src = "https://google.com/favicon.ico";
// 设定超时事件,延迟 3000 毫秒
var timeout = setTimeout(function () {
// 清除 onerror 和 onload 事件
img.onerror = img.onload = null;
console.log("time out.");
// 执行无法加载的事件
canNotLoad();
},3000);
// 设定错误事件
img.onerror = function () {
// 先清除超时事件
clearTimeout(timeout);
console.log("load error.");
// 执行无法加载的事件
canNotLoad();
}
// 设定可以加载的事件
img.onload = function () {
// 先清除超时事件
clearTimeout(timeout);
console.log("ok.");
// 执行可以加载的事件
canLoad();
}
function canNotLoad() {
/* code here */
console.log("无法加载");
}
function canLoad() {
/* code here */
console.log("可以加载");
}
虽然有代码,但是对js不是很懂,据说直接调用就可以,请大家自己研究。
第二步,修改为php代码,最终结果
<?php
$yousite= $_GET['yousite']; // 从请求中获取ua地址
?>
<!DOCTYPE html>
<html>
<head>
<title>Image Load Check Example</title>
</head>
<body>
<img id="myImage" src="<?php echo $yousite; ?> " alt="My Image">
<?php
$yououtput = '<div id="output"></div>';
// 使用字符串函数和条件语句来处理内容
if (strpos($output, 'canNotLoad') !== false) {
// 如果包含"无法加载",则返回0
$result = 'canNotLoad';
} else {
// 如果不包含"无法加载",则返回其他值或执行其他逻辑
$result = 'canLoad';
}
echo $result;
?>
<script>
// 获取图片元素
var img = document.getElementById('myImage');
// 设定超时事件,延迟 3000 毫秒
var timeout = setTimeout(function () {
// 清除 onerror 和 onload 事件
img.onerror = img.onload = null;
console.log("Time out.");
// 执行无法加载的事件
canNotLoad();
},1000);
// 设定错误事件
img.onerror = function () {
// 先清除超时事件
clearTimeout(timeout);
console.log("Load error.");
// 执行无法加载的事件
canNotLoad();
};
// 设定可以加载的事件
img.onload = function () {
// 先清除超时事件
clearTimeout(timeout);
console.log("OK.");
// 执行可以加载的事件
canLoad();
};
function canNotLoad() {
console.log("canNotLoad");
document.getElementById("output").innerHTML = "canNotLoad";
// 在此处添加自定义代码,例如修改网页元素或显示加载错误的消息等。
}
function canLoad() {
console.log("canLoad");
document.getElementById("output").innerHTML = "canLoad";
// 在此处添加自定义代码,例如修改网页元素或显示加载成功的消息等。
}
</script>
</body>
</html>
期间遇到的小白问题:
js怎么传递参数给php
在JavaScript中,你不能直接将参数传递给PHP,因为JavaScript在客户端运行,而PHP在服务器端运行。但是,你可以通过以下几种方式间接地实现这个目标:
- 使用AJAX(异步JavaScript和XML):通过JavaScript的AJAX功能(如使用
fetch
、XMLHttpRequest
或jQuery.ajax
),你可以向服务器发送HTTP请求,并在请求中包含参数。然后,服务器上的PHP脚本可以接收这些参数并进行处理。 - 通过表单提交:如果是在网页中,你可以创建一个包含参数的表单,并使用JavaScript来提交表单。当用户提交表单时,浏览器将自动将表单数据发送到服务器。在服务器端,PHP脚本可以接收这些数据并进行处理。
- 通过URL参数:如果你希望将参数附加到URL中,可以使用JavaScript的
window.location
对象来修改URL。然后,当用户访问该URL时,服务器端的PHP脚本可以从URL中获取参数。
<div id=”output”></div> output的结果虽然被打印出来了,但是无法返回给php参数
在PHP中,将HTML元素的值返回给PHP参数通常涉及到将HTML元素与PHP代码结合使用,并使用适当的输入/输出机制来传递数据。下面是一个简单的示例,演示如何将HTML元素的值返回给PHP参数
<?php
// 获取HTML元素的值
$output = '<div id="output">无法加载</div>';
// 使用字符串函数和条件语句来处理内容
if (strpos($output, '无法加载') !== false) {
// 如果包含"无法加载",则返回0
$result = 0;
} else {
// 如果不包含"无法加载",则返回其他值或执行其他逻辑
$result = '处理结果';
}
// 输出结果
echo $result; // 输出 "处理结果" 或 0
?>