mamp pro4.1 写入浏览器的cookie失败原因可能是bom头

    xiaoxiao2021-03-25  177

    mac,mamp,php,setcookie,cookie读不出,写不住,写入失败,读出失败,失效。等的问题。可能的解决办法。

    前一段时间,有朋友让我帮他改php的一个项目。本人小白一个,在本地运行的时候,碰到用ajax调用写入setcookie失败。一般的代码在服务器上运行正常。

    到处搜索,未果。

    有人说setcookie前不能有输入,解决 :把setcookie之前的程序检查一下,是否在PHP代码<?php 之前有回车或者空格。或者:在程序的最开头执行一次 ob_start();

    我检查了一遍,没看到问题。

    问朋友,他说可能是本地host需要修改。我用的是mamp环境,按理是傻瓜式的,根本就不用在环境搭建上废脑的。后来还是设置了一个两个字母的域名,还是不行。

    (注:mac系统下,host的修改路径是双击Macintosh HD,找到.etc文件夹,就看到host了。)

    浏览器端也看到没有限制cookie写入。

    还是说重点吧,没有写过博客,不擅长写文章。

    是文件头bom引起的,我把整站都刷了一遍。去除了所有文件的bom头,然后,然后,就好了。

    <?php $auto = 1; checkdir('项目地址'); function checkdir($basedir){ if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if($file{0} == '.') { continue; } if ($file != '.' && $file != '..'){ if (!is_dir($basedir."/".$file)) { echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>"; }else{ $dirname = $basedir."/".$file; checkdir($dirname); } } } closedir($dh); } } function checkBOM ($filename) { global $auto; $contents = file_get_contents($filename); $charset[1] = substr($contents, 0, 1); $charset[2] = substr($contents, 1, 1); $charset[3] = substr($contents, 2, 1); if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) { if ($auto == 1) { $rest = substr($contents, 3); rewrite ($filename, $rest); return ("<font color=red>BOM found, automatically removed.</font>"); } else { return ("<font color=red>BOM found.</font>"); } } else return ("BOM Not Found."); } function rewrite ($filename, $data) { $filenum = fopen($filename, "w"); flock($filenum, LOCK_EX); fwrite($filenum, $data); fclose($filenum); } ?>

    这段不是我写的,不知道是哪位大神写的,忘了是在哪复制来的。想也不是没有公德心,哈哈,人家帮了我,应该第一时间感谢。或许我已经留了感激之语了。不过确实想不起来在哪翻到了。谢谢代码的原作者。

    反馈给你们,希望能帮你们解决问题。我那会用了整整三天。你们懂的,头很大。要疯的感觉。

    转载请注明原文地址: https://ju.6miu.com/read-3876.html

    最新回复(0)