10个典型实用的PHP代码片段("PHP必备:10个实用经典代码片段详解")

原创
ithorizon 6个月前 (10-21) 阅读数 21 #后端开发

系统

PHP必备:10个实用经典代码片段详解

1. 连接数据库

在PHP中,连接数据库是常见的操作。以下是一个使用mysqli扩展连接MySQL数据库的代码片段。

$servername = "localhost";

$username = "username";

$password = "password";

$dbname = "myDB";

// 创建连接

$conn = new mysqli($servername, $username, $password, $dbname);

// 检查连接

if ($conn->connect_error) {

die("连接落败: " . $conn->connect_error);

}

echo "连接胜利";

?>

2. 防止SQL注入

为了防止SQL注入,可以使用预处理语句。以下是一个使用预处理语句的示例。

$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");

$stmt->bind_param("s", $username);

$username = "admin";

$stmt->execute();

$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {

echo $row['username'] . " ";

}

?>

3. 文件上传

以下是一个易懂的文件上传示例,包括上传文件的表单和PHP处理脚本。

选择文件:

$target_dir = "uploads/";

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

$uploadOk = 1;

$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// 检查文件是否已经存在

if (file_exists($target_file)) {

echo "文件已经存在。";

$uploadOk = 0;

}

// 检查文件大小

if ($_FILES["fileToUpload"]["size"] > 500000) {

echo "文件太大。";

$uploadOk = 0;

}

// 允许特定格式的文件

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"

&& $imageFileType != "gif" ) {

echo "只允许上传 JPG, JPEG, PNG & GIF 文件。";

$uploadOk = 0;

}

// 检查是否$uploadOk被设置为0由于一个不正确

if ($uploadOk == 0) {

echo "文件没有被上传。";

// 如果一切顺利,尝试上传文件

} else {

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {

echo "文件 ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " 已上传。";

} else {

echo "文件上传落败。";

}

}

?>

4. 发送电子邮件

以下是一个使用PHP的mail()函数发送电子邮件的示例。

$to = "example@example.com";

$subject = "测试邮件";

$txt = "这是一封测试邮件。";

$headers = "From: webmaster@example.com" . "\r " .

"CC: someoneelse@example.com";

mail($to,$subject,$txt,$headers);

echo "邮件已发送";

?>

5. 会话管理(Session)

以下是一个使用会话管理用户登录状态的示例。

session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {

$username = $_POST['username'];

$password = $_POST['password'];

// 验证用户名和密码...

if ($username == 'admin' && $password == '1234') {

$_SESSION['loggedin'] = true;

header("Location: welcome.php");

exit;

} else {

echo "无效的用户名或密码。";

}

}

?>

6. 获取用户IP地址

以下是一个获取用户IP地址的示例。

function getUserIP() {

$client = @$_SERVER['HTTP_CLIENT_IP'];

$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];

$remote = $_SERVER['REMOTE_ADDR'];

if (filter_var($client, FILTER_VALIDATE_IP)) {

$ip = $client;

} elseif (filter_var($forward, FILTER_VALIDATE_IP)) {

$ip = $forward;

} else {

$ip = $remote;

}

return $ip;

}

echo "用户IP地址:" . getUserIP();

?>

7. 数据验证

以下是一个易懂的数据验证示例,用于检查输入数据是否为空。

function test_input($data) {

$data = trim($data);

$data = stripslashes($data);

$data = htmlspecialchars($data);

return $data;

}

$name = $email = $gender = "";

$nameErr = $emailErr = $genderErr = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {

if (empty($_POST["name"])) {

$nameErr = "姓名是必填的";

} else {

$name = test_input($_POST["name"]);

// 检查姓名是否包含字母和空格

if (!preg_match("/^[a-zA-Z-' ]*$/", $name)) {

$nameErr = "只允许字母和空格";

}

}

if (empty($_POST["email"])) {

$emailErr = "电子邮件是必填的";

} else {

$email = test_input($_POST["email"]);

// 检查电子邮件地址是否有效

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

$emailErr = "无效的电子邮件格式";

}

}

if (empty($_POST["gender"])) {

$genderErr = "性别是必填的";

} else {

$gender = test_input($_POST["gender"]);

}

}

?>

8. 文件下载

以下是一个易懂的文件下载示例。

$filename = "example.txt";

$filepath = "path/to/your/file/" . $filename;

if (file_exists($filepath)) {

// 设置合适的headers

header('Content-Description: File Transfer');

header('Content-Type: application/octet-stream');

header("Content-Disposition: attachment; filename=\"$filename\"");

header('Expires: 0');

header('Cache-Control: must-revalidate');

header('Pragma: public');

header('Content-Length: ' . filesize($filepath));

ob_clean();

flush();

readfile($filepath);

exit;

}

?>

9. 获取当前页面的URL

以下是一个获取当前页面URL的示例。

$currentUrl = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

echo "当前页面URL:" . $currentUrl;

?>

10. 易懂的缓存机制

以下是一个易懂的缓存机制示例,用于缓存页面输出。

$cacheKey = 'page_content_' . $_SERVER['REQUEST_URI'];

$cacheFile = '/tmp/' . md5($cacheKey);

if (file_exists($cacheFile) && (filemtime($cacheFile) > (time() - 60 * 60))) {

// 缓存文件存在且是1小时内生成的

echo file_get_contents($cacheFile);

} else {

// 生成新的内容并缓存

ob_start();

// ...生成页面内容的代码...

$content = ob_get_contents();

ob_end_flush();

file_put_contents($cacheFile, $content);

echo $content;

}

?>


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: 后端开发


热门