初识循环、超全局变量及 网络请求
while(){}循环
- while(){}循环的括号内是判断条件,这里需要注意里面的条件需要是一个有限的条件,得让这个循环有机会结束,否则就会陷入死循环
- do{}while()循环,是先执行后判断,无论条件如何他都会先执行一次
//while
$num = 10;
while ($num <= 20) {
echo $num;
echo "<hr>";
$num++;
}
//do while
do {
echo $num;
echo "<hr>";
$num++;
} while ($num > 20);
for(){}循环
- for 循环的括号内有三条语句,初始值,条件,初始值的运算
- for 循环可以加 if 条件判断,判断中加入 break 使其达到终止的效果
- for 循环可以加 if 条件判断,判断中加入 continue 使其达到跳过某一条件的效果
- 结合 mt_rand()函数制作彩色验证码小案例
<?php
//自定义64位数据,验证码从其中产生数据
$code = "12defghjABCDEFGHkmnpJKLMNPQRSTUWq3459abcdefgh6XYZ78jkmnpqwuvxyz";
//生成彩色验证码
for ($i = 0; $i <= 3; $i++) {
@$num .= '<span style="color:rgb(' . mt_rand(0, 255) . "," . mt_rand(0, 255) . "," . mt_rand(0, 255) . '">' . $code[mt_rand(0, 63)] . '<span>';
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>验证码</title>
</head>
<body>
<?php echo $num ?>
</body>
</html>
- 99 乘法表小案例
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>99乘法表</title>
</head>
<body>
<table>
<caption>99乘法表</caption>
<tbody>
<?php
for ($i = 1; $i <= 9; $i++) {
echo '<tr>';
for ($j = $i; $j <= 9; $j++) {
echo '<td style="border:1px solid">' . $i . '×' . $j . '=' . $i * $j . '</td>';
}
echo '</tr>';
}
?>
</tbody>
</table>
</body>
</html>
超全局变量
- $_GET() 获取 get 请求的内容,内容是方便在浏览器地址上显示出来的,在浏览器收藏里用很方便
- $_POST() 获取 post 请求的内容,内容是不方便在浏览器地址上显示出来的,对密码等信息能做到比较好的加密
- $_COOKIE与$_SESSION 用来存储缓存信息,用于保存用户信息
- $_REQUEST()是一个一维数组,包含了$_POST、$_GET、$_COOKIE 等一切信息,这里需要注意 post、get、cookie 会出现重复下标
- $GLOBALS 是二维数组,会对 get、post、cookie、file 等请求信息分别展示
- $_SERVER 服务器环境的详细信息,一般会用到里面的请求时间,其值是时间戳
- 预定义常量
- __FILE__获取当前文件
- __DIR__获取当前目录
- PHP_VERSION 获取当前 PHP 版本
网络请求
常用较简单的两种方式
- file()可以把整个文件读入到一个数组中
- file_get_contents()可以将整个文件读入到一个字符串中
Curl 请求方式
Curl 请求方式功能更强大,也更为复杂,不仅可以进行 GET 请求,还可以进行 POST 请求
$ch = curl_init();//创建curl,它一直存在在这里
//curl_setopt($ch,CURLOPT系统常量(具体可查手册),"url地址");配置curl相关参数
curl_setopt($ch,CURLOPT_URL,"http://apis.juhe.cn/simpleWeather/query");
//curl可以进行post请求,这里以post请求为例
curl_setopt($ch, CURLOPT_POST, 1); // 最后面的1代表这个请求是post请求
$data = [
'key' => 'key0password',
'city' => '济南'
];
// 如要下载一个文件可以设置CURLOPT_CONNECTTIMEOUT为10秒,也就是如果服务器10秒内没有响应,脚本就自动断开连接,然后CURLOPT_TIMEOUT可以设置为60,即如果文件1分钟内没有下完,脚本就自动断开连接。
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,3);//发起连接前等待的时间,如果设置为0,则无限等待,也就是这个是告诉php脚本在成功连接服务器前的等待时间的
curl_setopt($ch,CURLOPT_TIMEOUT,30);//设置连接后超时的时间,防止死循环
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);//爬取重定向页面内容
curl_setopt($ch,CURLOPT_AUTOREFERER,1);//自动设置Referer,用作防盗链
curl_setopt($ch,CURLOPT_HEADER,0);//显示返回的Header区域的内容
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//设置结果是保存到字符串中还是直接输出到屏幕,1是保存到字符串中,这样在封装好自定义函数后close关闭curl后就不会继续输出到屏幕,就可以使用return返回
curl_setopt($ch,CURLOPT_USERAGENT,'Data');//在HTTP请求中包含一个“User-Agent: "头的字符串
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);//强制使用HTTP/1.1
$html = curl_exec($ch);
curl_close($ch);
echo $html;//因为上面的代码中已经限制了close后不直接输出到屏幕,因此需要输出一下