单词:construct 构造 destruct 摧毁 empty 空的 trim 修剪 strip 清除 slash 斜线 special 特殊 char 字符 query 询问
构造方法(魔术方法)
构造方法是一种特殊的函数,用于在创建对象时初始化对象属性。在 PHP 中,构造方法通过 __construct()
实现。以下是一个示例:
class Person{
var $name;
var $age;
var $sex;
function __construct($name='老王',$age=18,$sex='女'){
$this->name =$name;
$this->age =$age;
$this->sex =$sex;
}
}
$ren = new Person("张三",18,"男");
超级全局变量
超级全局变量用于接收前端表单传递的数据。例如,使用 $_GET
、$_POST
和 $_REQUEST
接收 GET 和 POST 请求的参数。
前端表单示例:
<form action="super_var.php" method="get">
<input type="text" name="uname" placeholder="请输入用户名"><br>
<input type="password" name="pwd" placeholder="请输入密码"><br>
<input type="submit" value="登录">
</form>
后端接收数据示例:
/isset判断是否存在key为‘uname’和‘pwd’的值
if(isset($_POST['uname'])&&isset($_POST['pwd'])){
$name = $_POST['uname'];
$pwd = $_POST['pwd'];
//empty判断值是否为NULL,为NULL返回值为1
if(empty($name)||empty($pwd)){
echo "<script>alert('用户名或密码不能为空');history.back();</script>";
exit;
}
//只能包含字母和数字长度大于6小于12的正则表达式,preg_match匹配正则
$reg = "/^[a-zA-Z0-9]{6,12}+$/";
if(!preg_match($reg,$name)){
echo "<script>alert('用户名或密码只能包含字母和数字');history.back();</script>";
exit;
}
echo "<script>alert('登录成功!')</script>";
}
数据清洗
数据清洗是处理用户输入的重要步骤。以下是一些常用的数据清洗函数:
trim()
:去除字符串首尾的空格。stripslashes()
:去除字符串中的反斜杠。htmlspecialchars()
:将特殊字符转换为 HTML 实体。
$str = ' NTD 2404 ';
echo '|'.trim($str).'|'; // 输出:|NTD 2404|
$str = '\n\N\T\D 2404';
echo stripslashes($str); // 输出:nNTD 2404
$str = "<script>alert('hello');</script>";
echo htmlspecialchars($str); // 输出:安全的 HTML 代码
Cookie 和 Session
Cookie 和 Session 用于保存会话状态。
Cookie
Cookie 用于在不同页面间保存用户信息。设置 Cookie:
setcookie('cookie_name','cookie_key',time()+x);
获取 Cookie:
$_COOKIE['cookie_name']
删除 Cookie:
setcookie('cookie_name','',time()-x);
Session
Session 将用户信息存储在服务器上。使用 Session:
session_start();//开启session
$_SESSION['uname'] =$name;//传递参数
$_SESSION['pwd'] =$pwd;
关闭 Session:
unset($_SESSION['uname']);
unset($_SESSION['pwd']);//清空文件中的内容
session_destroy();//销毁session
Session 文件通常存储在 PHPstuby/tmp/tmp
目录下
文件名:sess_8bglllpijuhagji8earq3uo1j1(下划线前为固定值,后缀为sessionID)
PHP与SQL联动
PHP 连接 MySQL | 菜鸟教程 (runoob.com)
//链接数据库
$conn = new mysqli('127.0.0.1','root','root');
if($conn->connect_error){//判断是否链接成功
die("连接失败".$conn->connect_error);
}
//使用数据库
$conn -> query('use user');
//增
$sql = 'insert into persion(name,age) values("王同学",20)';
$conn -> query($sql);//执行成功返回一个boolean值ture
//改
$sql = 'update persion set age=30 where name="王同学"';
$conn -> query($sql);
//删
$sql = "delete from persion where age<=20";
$conn -> query($sql);
//查 fetch_assoc获取结果一次一行
$sql = "select * from persion";
$res = $conn -> query($sql);
while($row = $res->fetch_assoc()){
echo "姓名:".$row['name']."年龄:".$row['age']."<br>";
}
查数据时:$res为查询结果集
object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(3) ["lengths"]=> NULL ["num_rows"]=> int(5) ["type"]=> int(0) }
current_field
:当前字段的索引。field_count
:结果集中的字段数量。lengths
:一个数组,包含了结果集中每个字段的数据长度。num_rows
:结果集中的行数。type
:结果集的类型。
sql预处理
$sql = "insert into persion(name,age) values (?, ?)";
//生成预处理对象
$stmt = $conn->prepare($sql);
$stmt ->bind_param("si", $name, $age);
$name = "张三";
$age = 18;
$stmt->execute();
$stmt->close();