Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/75: Рейтинг темы: голосов - 75, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
1

Счетчик нажатий на кнопку PHP

23.09.2014, 14:38. Показов 14439. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем. Как реализовать следующее:

Есть HTML форма отправки имени, номера по нажатию на кнопку на почту. Как реализовать некий счетчик нажатий на кнопку и отобразить рядом с кнопкой. Например нажал один раз рядом отобразилось "Кликов: 1"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2014, 14:38
Ответы с готовыми решениями:

Счетчик нажатий на кнопку "Поделиться" в соцсетях на PHP
Доброго времени суток, Форумчане. Подскажите пожалуйста как решить данный вопрос. Имеется...

Счетчик уникальных нажатий кнопки +1
Здравствуйте.Смотрел в поиске. про ситуацию с БД не нашел. Есть таблица "Статьи" в базе данных...

Счетчик нажатий на кнопку
Вообщем решил сделать счётчик нажатия кнопок без ajax и js. Есть бд - statistic. C полями id,...

Счётчик нажатий на кнопку
Вообщем по идеи должен считать нажатия и выводить их в label1, считает в итоге только 1 нажатие,...

20
120 / 116 / 77
Регистрация: 19.08.2013
Сообщений: 430
23.09.2014, 14:48 2
HTML форма насколько я понимаю передает данные на PHP-скрипт, который собственно и отправляет почту, там и считайте, не вижу проблемы
0
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
23.09.2014, 14:51  [ТС] 3
А если страницу перезапустить счетчик будет равным нулю ведь. Мне нужно чтобы где-то хранилось в файле желательно. БД создавать для этого не хочу потому что это простой Landing Page. Есть какой-нибудь простой пример?
0
120 / 116 / 77
Регистрация: 19.08.2013
Сообщений: 430
23.09.2014, 15:00 4
пишите в файл, в чем сложность?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
if(file_exists('counter.txt')){
    $counter = file_get_contents('counter.txt');
    $counter++;
    $f = fopen('counter.txt','w+');
    fputs($f,$counter);
    fclose($f);
}
else{
    $f = fopen('counter.txt','w+');
    fputs($f,0);
    fclose($f);
}
Ну и в нужном месте выводите:
PHP
1
2
$counter = file_get_contents('counter.txt');
echo 'Кликов: '.$counter;
0
36 / 36 / 14
Регистрация: 05.06.2011
Сообщений: 306
23.09.2014, 15:01 5
Цитата Сообщение от Гаджи Посмотреть сообщение
А если страницу перезапустить счетчик будет равным нулю ведь. Мне нужно чтобы где-то хранилось в файле желательно. БД создавать для этого не хочу потому что это простой Landing Page. Есть какой-нибудь простой пример?
как вариант: юзать куки...
0
120 / 116 / 77
Регистрация: 19.08.2013
Сообщений: 430
23.09.2014, 15:08 6
Цитата Сообщение от xadjek Посмотреть сообщение
как вариант: юзать куки...
Ну это если локальный вариант устраивает
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
23.09.2014, 15:32 7
PHP
1
2
3
4
5
6
<?php
$file_name = './counter.txt';
file_exists($file_name) || file_put_contents($file_name, 0);
$count = (int) file_get_contents($file_name);
file_put_contents($file_name, ++$count);
echo 'Cliked ', $count, ' times.';
с куками
PHP
1
2
3
4
5
6
7
<?php
$file_name = './counter.txt';
file_exists($file_name) || file_put_contents($file_name, 0);
$count = $tmp = (int) file_get_contents($file_name);
isset($_COOKIE['clicked']) || setcookie('clicked', ++$count, time()+3600*24*366, '/');
$count === $tmp || file_put_contents($file_name, $count);
echo 'Cliked ', $count, ' times.';
Цитата Сообщение от xadjek Посмотреть сообщение
как вариант: юзать куки...
Цитата Сообщение от gbsoftware Посмотреть сообщение
Ну это если локальный вариант устраивает
использовать только кукисы для хранения подобных вещей не лучшая идея. Пользователь удалит куки, и что, "Clicked 0 times" ?
0
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
23.09.2014, 15:37  [ТС] 8
Локальный вариант не подходит

А вы не могли бы привести пример кнопки с которого затем данные записываются сюда? Сейчас не хочется читать про php из-за других работ не связанных с вебом. А реализовать нужно как можно быстрее.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(file_exists('counter.txt')){
    $counter = file_get_contents('counter.txt');
    $counter++;
    $f = fopen('counter.txt','w+');
    fputs($f,$counter);
    fclose($f);
}
else{
    $f = fopen('counter.txt','w+');
    fputs($f,0);
    fclose($f);
}
 
Ну и в нужном месте выводите:
 
$counter = file_get_contents('counter.txt');
echo 'Кликов: '.$counter;
0
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
25.09.2014, 11:02  [ТС] 9
Ау)
0
KOPOJI
25.09.2014, 11:18
  #10

Не по теме:

за эти два дня уже можно было нагуглить эти несколько строчек, а не ждать готовенького..

0
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
25.09.2014, 13:08  [ТС] 11
Нашел такой код, он рабочий все подсчитывает. Только в этой форме в action="<?php print $_SERVER['PHP_SELF'];?>" такое, а в моей форме в action указано mail.php для отправки на почту. Как мне быть чтобы она и на почты отправляла и счетчик работал?
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
    if( file_exists('./counter.dat') )   {
        $c = intval(trim(file_get_contents('./counter.dat')));
    }
    else    {
        $c = 0;
    }
    if( isset($_POST['button_click']) AND $_POST['button_click'] )    {
        $c++;
        $fh = fopen('./counter.dat', 'w+');
        fwrite($fh, $c);
        fclose($fh);
    }
?>
 
 
<form action="<?php print $_SERVER['PHP_SELF'];?>" method="POST">
<input type="hidden" name="button_click" value="1" />
<input type="submit" name="submit" value="Кнопго!" />
</form>
 
<div id="writecounter"><?php print $c;?></div>
0
120 / 116 / 77
Регистрация: 19.08.2013
Сообщений: 430
25.09.2014, 13:13 12
Дайте код своей формы
0
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
25.09.2014, 13:17  [ТС] 13
HTML5
1
2
3
4
5
6
7
8
9
10
11
<div class="popup_modal" id="form_modals">
    <h1 id="script_help" style="display: none;"></h1>
    <h2>ОСТАВЬТЕ ЗАЯВКУ</h2>
    <p>и наш специалист свяжется с Вами</p>
    <form action="mail.php" method="post" id="hidden_form">
        <input name="name" type="text" placeholder="Пример: Михаил" id="hidden_name" />
        <input name="phone" type="text" placeholder="Пример: +7 (928) 500-2030" id="hidden_telephone"/>
        <input name="email" type="text" placeholder="Пример: info@mail.ru" id="hidden_email" pattern="^([A-Za-z0-9_-]+\.)*[A-Za-z0-9_-]+@[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*\.[A-Za-z]{2,6}$" required/>
        <input type="submit" value="ОТПРАВИТЬ" class="ex_hover" />
    </form>
</div>
0
120 / 116 / 77
Регистрация: 19.08.2013
Сообщений: 430
25.09.2014, 13:23 14
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<? 
if(file_exists('counter.txt')) $counter = file_get_contents('counter.txt');
else $counter = 0;
?>
<div class="popup_modal" id="form_modals">
    <h1 id="script_help" style="display: none;"></h1>
    <h2>ОСТАВЬТЕ ЗАЯВКУ</h2>
    <p>и наш специалист свяжется с Вами</p>
    <form action="mail.php" method="post" id="hidden_form">
        <input name="name" type="text" placeholder="Пример: Михаил" id="hidden_name" />
        <input name="phone" type="text" placeholder="Пример: +7 (928) 500-2030" id="hidden_telephone"/>
        <input name="email" type="text" placeholder="Пример: info@mail.ru" id="hidden_email" pattern="^([A-Za-z0-9_-]+\.)*[A-Za-z0-9_-]+@[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*\.[A-Za-z]{2,6}$" required/>
        <input type="submit" value="ОТПРАВИТЬ" class="ex_hover" />&nbsp;<?echo 'Кликов: '.$counter;?>
    </form>
</div>
соответственно файл делаете PHP если он HTML
ну а в mail.php добавляете этот код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
if(file_exists('counter.txt')){
    $counter = file_get_contents('counter.txt');
    $counter++;
    $f = fopen('counter.txt','w+');
    fputs($f,$counter);
    fclose($f);
}
else{
    $f = fopen('counter.txt','w+');
    fputs($f,0);
    fclose($f);
}
0
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
25.09.2014, 13:30  [ТС] 15
Подсчитывает, но не отображает количество нажатий
0
120 / 116 / 77
Регистрация: 19.08.2013
Сообщений: 430
25.09.2014, 13:33 16
Покажите пациента
0
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
25.09.2014, 13:34  [ТС] 17
Это указал на странице index.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<? 
if(file_exists('counter.txt')) $counter = file_get_contents('counter.txt');
else $counter = 0;
?>
<div class="popup_modal" id="form_modals">
    <h1 id="script_help" style="display: none;"></h1>
    <h2>ОСТАВЬТЕ ЗАЯВКУ</h2>
    <p>и наш специалист свяжется с Вами</p>
    <form action="mail.php" method="post" id="hidden_form">
 
        <input type="submit" value="ОТПРАВИТЬ" class="ex_hover" />&nbsp;<?echo 'Кликов: '.$counter;?>
    </form>
</div>

А это в mail.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
  if(file_exists('counter.txt')){
    $counter = file_get_contents('counter.txt');
    $counter++;
    $f = fopen('counter.txt','w+');
    fputs($f,$counter);
    fclose($f);
}
else{
    $f = fopen('counter.txt','w+');
    fputs($f,0);
    fclose($f);
}
в файле counter.txt есть количество, но почему не отображается не пойму
0
120 / 116 / 77
Регистрация: 19.08.2013
Сообщений: 430
25.09.2014, 13:40 18
Посмотрите исходный код страницы или временно отключите стили, возможно вывод перекрывается другими элементами
0
0 / 0 / 1
Регистрация: 07.02.2013
Сообщений: 56
25.09.2014, 13:42  [ТС] 19
Не думаю, я стили не применяю. Создал новую страницу index.php только с кодом который Вы подправили, а страницу mail.php не менял, там такой код:

Кликните здесь для просмотра всего текста

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
 /* Здесь проверяется существование переменных */
  if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
 if (isset($_POST['name'])) {$name = $_POST['name'];}
  if (isset($_POST['email'])) {$email = $_POST['email'];}
  
  if(file_exists('counter.txt')){
    $counter = file_get_contents('counter.txt');
    $counter++;
    $f = fopen('counter.txt','w+');
    fputs($f,$counter);
    fclose($f);
}
else{
    $f = fopen('counter.txt','w+');
    fputs($f,0);
    fclose($f);
}
 
/* Сюда впишите свою эл. почту */
 $address = "123@intechsoft.ru";
 
/* А здесь прописывается текст сообщения, \n - перенос строки */
 $mes = "Тема: Заказ 1С\nТелефон: $phone\nИмя: $name\nE-mail: $email";
 
/* А эта функция как раз занимается отправкой письма на указанный вами email */
$sub='Заказ с сайта'; //сабж
$email='<yourdomen.ru>'; // от кого
 $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email");
 
ini_set('short_open_tag', 'On');
header('Refresh: 3; URL=index.html');
 
 
 
?>
 
 
 
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Спасибо! Мы Вам скоро перезвоним.</title>
<meta name="generator">
<style type="text/css">
body
{
   background: #fff;
   
}
</style>
<script type="text/javascript">
setTimeout('location.replace("/index.php")', 1000);
/*Изменить текущий адрес страницы через 1 секунду (1000 миллисекунд)*/
</script> 
</head>
</body>
</html>
0
120 / 116 / 77
Регистрация: 19.08.2013
Сообщений: 430
25.09.2014, 13:47 20
Хм... Ну попробуйте так:
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php 
if(file_exists('counter.txt')) $counter = file_get_contents('counter.txt');
else $counter = 0;
?>
<div class="popup_modal" id="form_modals">
    <h1 id="script_help" style="display: none;"></h1>
    <h2>ОСТАВЬТЕ ЗАЯВКУ</h2>
    <p>и наш специалист свяжется с Вами</p>
    <form action="mail.php" method="post" id="hidden_form">
 
        <input type="submit" value="ОТПРАВИТЬ" class="ex_hover" />&nbsp;
<?php
echo 'Кликов: '.$counter;
?>
    </form>
</div>
0
25.09.2014, 13:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2014, 13:47
Помогаю со студенческими работами здесь

Счетчик количества нажатий на кнопку
Добрый вечер! Помогите создать счетчик количества нажатий на кнопку. Можно это как то сделать с...

Счетчик нажатий на кнопку в ATmega 16
Здравствуйте! Встала проблема при освоении программировании на ассемблер, т.к. задание сделать...

Счетчик нажатий на кнопку до 15 с выводом на семисегментник (ATMega168)
Напишите программу, работающую с кнопкой и двумя 7-сегментными индикаторами, которая будет считать...

Поместить на форму панель и кнопку "Счётчик нажатий"
Поместить на форму панель и кнопку &quot;Счётчик нажатий&quot;. При запуске программы на панели находится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru