表单提交后先写入SQL再追加写入服务器本地文件的实现方法问询
实现方法
你可以直接在SQL插入成功的逻辑分支中新增本地文件写入逻辑,以下是修改后的完整代码:
extract($_GET); $valid_input = true; if($cronsafe != 'mRT0SmaUDzDv2'){ $valid_input = false; echo 'Error'; die(); } if(strlen($name) == 0){ $valid_input = false; echo 'not valid'; die(); } if(strlen($email) == 0){ $valid_input = false; echo 'not valid'; die(); } if(strlen($phone) == 0){ $valid_input = false; echo 'not valid'; die(); } if(strlen($company) == 0){ $valid_input = false; echo 'not valid'; die(); } if($valid_input): $compilerConfig = 'includes/config.php'; if (file_exists($compilerConfig)) { include($compilerConfig); } require_once $mageFilename; Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); $xml = simplexml_load_file($localFile); $conn = mysqli_connect($hostname_conn,$username_conn,$password_conn,$database_conn); $idx = md5($email.date("Y-m-d").$current_url); $insert_sql = $conn->prepare("INSERT IGNORE INTO `cms_page_track` ( `name`, `email`,`company`,`phone`, `idx`,`cms_page`) VALUES (?,?,?,?,?,?)"); $insert_sql->bind_param("ssssss", $name, $email,$company,$phone,$idx,$current_url); if(!$insert_sql->execute()) : echo '0'; else: // 以下是新增的写入本地文件逻辑 // 配置写入的文件路径,建议放在非web可访问的目录,避免数据泄露 $logFile = '/var/www/data_log/'.date('Ymd').'_cms_track.log'; // 组装要写入的内容,这里用CSV格式方便后续解析,可按需调整 $logContent = implode(',', [ date('Y-m-d H:i:s'), $name, $email, $phone, $company, $current_url, $idx ]).PHP_EOL; // 追加写入文件,FILE_APPEND参数表示追加不覆盖,LOCK_EX避免并发写入冲突 file_put_contents($logFile, $logContent, FILE_APPEND | LOCK_EX); echo '1'; endif; endif;
注意事项
- 需提前创建写入目标目录,并给PHP运行进程授予目录读写权限,目录权限建议设置为755,不要设置777避免安全风险
- 文件存储路径不要放在网站公开的根目录下,防止外部用户直接下载泄露用户隐私数据
- 如果写入数据量较大,也可以选择生成CSV、JSON等结构化格式文件,方便后续批量处理
内容的提问来源于stack exchange,提问作者acctman
相关产品推荐
相关产品推荐

