PHP新手求助:实现向外部服务器发送URL及get.php编写方案
如何编写接收URL的get.php脚本
嘿,别担心英语的问题,我来帮你搞定这个get.php的写法!你的前端代码已经把当前页面的URL通过GET参数url发送到了get.php,接下来我们只需要在get.php里接收这个参数,然后根据你的需求处理它(比如保存到文件、存入数据库等)。下面是几种常见的实现方式:
1. 最简单的:把URL保存到文本文件
这种方式适合快速测试或者简单的日志记录,代码如下:
<?php // 检查是否存在url参数 if (isset($_GET['url'])) { $receivedUrl = $_GET['url']; // 可选:验证URL格式,确保是合法的URL(避免恶意输入) if (filter_var($receivedUrl, FILTER_VALIDATE_URL)) { // 把URL追加到日志文件,每个URL占一行 $logFile = 'url_logs.txt'; // 加上时间戳会更实用 $logEntry = date('Y-m-d H:i:s') . ' - ' . $receivedUrl . PHP_EOL; file_put_contents($logFile, $logEntry, FILE_APPEND | LOCK_EX); // 可选:返回成功响应给发送端 echo "URL已成功记录"; } else { echo "无效的URL格式"; } } else { echo "未接收到URL参数"; } ?>
注意:要确保url_logs.txt文件有写入权限,或者让PHP能创建这个文件(如果文件不存在的话)。
2. 把URL存入MySQL数据库
如果需要长期存储并方便查询,推荐存入数据库。这里用PDO来实现(更安全,避免SQL注入):
<?php // 数据库连接信息 $host = 'localhost'; $dbname = 'your_database'; $username = 'your_username'; $password = 'your_password'; try { // 创建PDO连接 $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); if (isset($_GET['url'])) { $receivedUrl = $_GET['url']; // 验证URL格式 if (filter_var($receivedUrl, FILTER_VALIDATE_URL)) { // 准备预处理语句,防止SQL注入 $stmt = $pdo->prepare("INSERT INTO url_records (url, created_at) VALUES (:url, NOW())"); $stmt->bindParam(':url', $receivedUrl); $stmt->execute(); echo "URL已成功存入数据库"; } else { echo "无效的URL格式"; } } else { echo "未接收到URL参数"; } } catch(PDOException $e) { echo "数据库错误: " . $e->getMessage(); } ?>
注意:你需要先创建对应的数据库表,比如:
CREATE TABLE url_records ( id INT AUTO_INCREMENT PRIMARY KEY, url TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP );
重要的安全提醒
- 验证输入:一定要用
filter_var或者自定义逻辑验证URL的合法性,避免接收恶意内容。 - 防止注入:如果用数据库,一定要用预处理语句(比如PDO的prepare),不要直接把用户输入拼接到SQL里。
- 权限控制:如果是保存到文件,不要把日志文件放在网站根目录下,避免被公开访问;数据库账号不要用root权限,只给必要的读写权限。
希望这些代码能帮到你,如果还有其他问题随时问!
内容的提问来源于stack exchange,提问作者James Grinfass
相关产品推荐
相关产品推荐

