Web开发者必备的10个救命的PHP代码片段("PHP开发者必备:10个高效实用的救命代码片段")
原创
PHP开发者必备:10个高效实用的救命代码片段
1. 获取客户端IP地址
获取客户端IP地址是一个常见的操作,以下是一个明了的函数来实现这个功能:
function getClientIP() {
$clientIP = '';
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$clientIP = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$clientIP = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$clientIP = $_SERVER['REMOTE_ADDR'];
}
return $clientIP;
}
2. 生成随机字符串
在开发中,我们频繁需要生成随机字符串,以下是一个生成随机字符串的函数:
function generateRandomString($length = 10) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
3. 数据库连接与查询
以下是一个明了的函数,用于连接数据库并执行查询:
function connectDB($host, $username, $password, $database) {
$conn = new mysqli($host, $username, $password, $database);
if ($conn->connect_error) {
die("连接挫败: " . $conn->connect_error);
}
return $conn;
}
function executeQuery($conn, $sql) {
$result = $conn->query($sql);
if ($result === false) {
die("查询挫败: " . $conn->error);
}
return $result;
}
4. 文件上传
以下是一个明了的文件上传函数,用于处理文件上传操作:
function uploadFile($inputName, $uploadDir) {
if (isset($_FILES[$inputName])) {
$fileTmpName = $_FILES[$inputName]["tmp_name"];
$fileName = $_FILES[$inputName]["name"];
$fileSize = $_FILES[$inputName]["size"];
$fileError = $_FILES[$inputName]["error"];
$fileType = $_FILES[$inputName]["type"];
$uploadPath = $uploadDir . basename($fileName);
if ($fileError === 0 && move_uploaded_file($fileTmpName, $uploadPath)) {
return $uploadPath;
} else {
return false;
}
}
return false;
}
5. 数据校验
以下是一个明了的数据校验函数,用于检查输入数据是否符合特定格式:
function validateEmail($email) {
return filter_var($email, FILTER_VALIDATE_EMAIL);
}
function validateURL($url) {
return filter_var($url, FILTER_VALIDATE_URL);
}
6. 数据加密和解密
以下是一个使用mcrypt库进行数据加密和解密的示例:
function encryptData($data, $key) {
$cipher = "rijndael-128";
$mode = MCRYPT_MODE_CBC;
$ivSize = mcrypt_get_iv_size($cipher, $mode);
$iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);
$encrypted = mcrypt_encrypt($cipher, $data, $key, $mode, $iv);
return base64_encode($encrypted);
}
function decryptData($encryptedData, $key) {
$cipher = "rijndael-128";
$mode = MCRYPT_MODE_CBC;
$ivSize = mcrypt_get_iv_size($cipher, $mode);
$encryptedData = base64_decode($encryptedData);
$decrypted = mcrypt_decrypt($cipher, $encryptedData, $key, $mode, $iv);
return trim($decrypted);
}
7. 防止SQL注入
以下是一个使用预处理语句防止SQL注入的示例:
function preventSQLInjection($conn, $sql, $types, $params) {
$stmt = $conn->prepare($sql);
$stmt->bind_param($types, ...$params);
$stmt->execute();
return $stmt->get_result();
}
8. 数据分页
以下是一个明了的分页函数,用于数据库查询导致的分页显示:
function paginateQuery($conn, $sql, $perPage, $page) {
$offset = ($page - 1) * $perPage;
$stmt = $conn->prepare($sql . " LIMIT ? OFFSET ?");
$stmt->bind_param("ii", $perPage, $offset);
$stmt->execute();
return $stmt->get_result();
}
9. 时间转换
以下是一个明了的时间转换函数,用于将Unix时间戳转换成可读的日期格式:
function convertTimestamp($timestamp, $format = 'Y-m-d H:i:s') {
return date($format, $timestamp);
}
10. 文件下载
以下是一个明了的文件下载函数,用于触发浏览器下载文件:
function downloadFile($filePath, $downloadName) {
if (file_exists($filePath)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($downloadName) . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filePath));
readfile($filePath);
exit;
}
}
以上就是10个PHP开发者必备的救命代码片段,这些代码片段涵盖了Web开发中的常见问题,能够帮助开发者减成本时间工作效能,解决实际问题。