MrNix21
@MrNix21

Почему не записывается текст в файл в связке JS + PHP?

Здравствуйте. Хочу организовать счетчик нажатия по кнопке с записью данных в файл txt. Перепробовал много разных скриптов которые нашел в инете, но ни один из них не работает. Например, такое решение:
страница с кнопкой:
<script language="JavaScript" type="text/javascript" src="counter.js"></script>
<script language="JavaScript"> 
if (window.print) { document.write(''); }
    </script><form><input type="button" name="print" value="Распечатать" onclick="javascript:window.print();counter('?add');"></form> 
     
<p>Распечатали <span id="counter">0</span> человек</p>
 
<p><img src="./kupon_files/kupon_print.jpg"  alt="Распечатай купон на скидку"></p>

Файл counter.js:
var req;
 
function processReqChange() {
    if (req.readyState == 4){      
        if (req.status == 200){
            document.getElementById('counter').innerHTML=req.responseText;      
        };        
    };
};
 
function loadXMLDoc(url) {  
    if (window.XMLHttpRequest) {        
        req = new XMLHttpRequest();        
        req.onreadystatechange = processReqChange;        
        req.open("GET", url, true);        
        req.send(null);    
    } else if (window.ActiveXObject) {        
        req = new ActiveXObject("Microsoft.XMLHTTP");        
        if (req) {            
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);    
            req.send();         
        };   
    };
};
 
function counter(v){
    loadXMLDoc('/counter.php'+v);   
};

Файл обработчик counter.php:
$c = file('counter.txt');
 
if (isset($_GET['add']))
{
    $c[0]++;
    $fp = fopen('counter.txt','w');
    fputs($fp,$c[0]);
    fclose($fp);  
}
 
echo $c[0];


Файлу counter.txt дал права 777. Пробовал на локалке и на хостинге. Но нигде не работает. Почему так, куда копать? Заранее спасибо всем ответившим.
  • Вопрос задан
  • 64 просмотра
Пригласить эксперта
Ответы на вопрос 2
coderisimo
@coderisimo Куратор тега JavaScript
Насчет раскопок. Как старый энтузиаст-копатель рекомендую. Начинайте копать с консоли. Откройте ее и посмотрите шлется ли запрос, если шлется, то куда и что в нем.
Если запрос шлется и запрос такой, какой надо - напишите. Значит надо исктаь трабл в серверном коде. Продолжим раскопки )))
Ответ написан
Комментировать
@Vitsliputsli
Код php работает, он странный, он будет терять данные, если придет несколько одновременных запросов, но более-менее работает.
На стороне клиента отправляйте через ajax (наверное jquery используете?), тогда все что нужно будет:
<button onclick="$.get('/counter.php',{add:1})">button</button>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы