Помощь

Не понимаю действие javascript!

2 9
user avatar
8 лет назад
Сообщений: 36
8 лет назад
Есть кнопка для получения бонуса это страница например many.php:

<span class=\\\"green\\\" onclick=\\\"post(\\\'bonus.php\\\', \\\'fac=bonus\\\');\\\">Получить бонус!</span>

Ее обработчик событий :

function post(link, zapros) {

$.ajax({

url: link, type: \\\'POST\\\', data: zapros, dataType: json,

error: function (infa){eval(infa.error);},

success: function(infa) {eval(infa.succes);}

});

}

И условия выполнения в файле bonus.php

// Какие то проверки

...........................................

if(isset($_POST[\\\"fac\\\"])){

if($_POST[\\\"fac\\\"] == \\\'bonus\\\'){

Получение бонуса...

}else{

error =\\\'Ошибка запроса\\\';

}

}

.................................

// Какой то вывод

Суть вопроса в том что все работает хорошо $_POST[\\\"fac\\\"] == \\\'bonus\\\'  и все работает хорошо бонус начисляется , но возникает  какой то  косяк а именно:

Если взять и через консоль разработчика в  браузере(просмотреть код) поменять например  в  кнопке вместо fac=bonus на fac=bonus23 и нажать на кнопку, то он должен показать код ошибки \\\"error \\\" т.к.  bonus23!=bonus но происходит другая вещь, бонус все равно начисляется. Т.е. сколько не меняй в файле many.php значение  \\\"fac\\\" через браузер , в bonus.php значение  $_POST[\\\"fac\\\"] посылается как мы указали  в файле many.php и он не как на изменения через браузер не реагирует.

Вопрос? Как сделать так что бы на изменения через браузер он реагировал т.е. если человек указал через браузер fac=bonus121 то в bonus.php $_POST[\\\"fac\\\"]  = bonus121  и выводилась ошибка?
Ответ на: Artsem · 8 лет назад
“Есть кнопка для получения бонуса это страница например many.php:\r\n\r\n&lt;span class=\\\"green\\\" onclick=\\\"post(\\\'bonus.php\\\', \\\'fac=bonus\\\');\\\"&gt;Получить бонус!&lt;/span&gt;\r\n\r\n...”
user avatar
13 лет назад
Сообщений: 1859
8 лет назад

Цитата: Artsem от 12.02.2018, 19:52
Есть кнопка для получения бонуса это страница например many.php:

<span class=\\\"green\\\" onclick=\\\"post(\\\'bonus.php\\\', \\\'fac=bonus\\\');\\\">Получить бонус!</span>

Ее обработчик событий :

function post(link, zapros) {

$.ajax({

url: link, type: \\\'POST\\\', data: zapros, dataType: json,

error: function (infa){eval(infa.error);},

success: function(infa) {eval(infa.succes);}

});

}

И условия выполнения в файле bonus.php

// Какие то проверки

...........................................

if(isset($_POST[\\\"fac\\\"])){

if($_POST[\\\"fac\\\"] == \\\'bonus\\\'){

Получение бонуса...

}else{

error =\\\'Ошибка запроса\\\';

}

}

.................................

// Какой то вывод

Суть вопроса в том что все работает хорошо $_POST[\\\"fac\\\"] == \\\'bonus\\\'  и все работает хорошо бонус начисляется , но возникает  какой то  косяк а именно:

Если взять и через консоль разработчика в  браузере(просмотреть код) поменять например  в  кнопке вместо fac=bonus на fac=bonus23 и нажать на кнопку, то он должен показать код ошибки \\\"error \\\" т.к.  bonus23!=bonus но происходит другая вещь, бонус все равно начисляется. Т.е. сколько не меняй в файле many.php значение  \\\"fac\\\" через браузер , в bonus.php значение  $_POST[\\\"fac\\\"] посылается как мы указали  в файле many.php и он не как на изменения через браузер не реагирует.

Вопрос? Как сделать так что бы на изменения через браузер он реагировал т.е. если человек указал через браузер fac=bonus121 то в bonus.php $_POST[\\\"fac\\\"]  = bonus121  и выводилась ошибка?

А вы пишете неправильное имя имено добавляя в конце пару цыфр? Пробовали в браузере открыть ф12 и посмотреть как реагирует консоль на нажатие кнопки?
В именах нельзя указывать цифры в начале имени переменой, я надеюсь вы не указываете их в начале имени?
Ответ на: Pretorian · 8 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: Artsem от 12.02.2018, 19:52</div>\r\nЕсть кнопка для получения бонуса это страница например many.php:\r\n\r\n&lt;span class=\\\"green\\\" onclick=...”
user avatar
13 лет назад
Сообщений: 1859
8 лет назад
и. то что вы меняете в браузере не значит ничего если вы не применяете изминения в выполнение. Вы же применяете в браузере изминения? Иначе это будет просто текст а старый хтмл и дальше будет оставатся не измененным
Ответ на: Pretorian · 8 лет назад
“и. то что вы меняете в браузере не значит ничего если вы не применяете изминения в выполнение. Вы же применяете в браузере изминения? Иначе это будет просто текст а старый хтмл и дальше будет оставатс...”
user avatar
13 лет назад
Сообщений: 1859
8 лет назад
в любом сулчае другое имя не пройдет эту проверку
f(isset($_POST[\\\"fac\\\"])){

if($_POST[\\\"fac\\\"] == \\\'bonus\\\'){

разве что после else у вас стоит тот же самый mysql запрос что и в случае прохождения проверки. Было бы не плохо если бы вы написали полный код кнопки, события и запроса, безусловно ценные коды для вас в нутри проверки можете затереть.

 
Ответ на: Pretorian · 8 лет назад
“в любом сулчае другое имя не пройдет эту проверку\r\nf(isset($_POST[\\\"fac\\\"])){\r\n\r\nif($_POST[\\\"fac\\\"] == \\\'bonus\\\'){\r\n\r\nразве что после else у вас стоит тот же самый mysql запрос ч...”
user avatar
8 лет назад
Сообщений: 36
8 лет назад

Цитата: Pretorian от 12.02.2018, 19:55

Цитата: Artsem от 12.02.2018, 19:52
Есть кнопка для получения бонуса это страница например many.php:

<span class=\\\"green\\\" onclick=\\\"post(\\\'bonus.php\\\', \\\'fac=bonus\\\');\\\">Получить бонус!</span>

Ее обработчик событий :

function post(link, zapros) {

$.ajax({

url: link, type: \\\'POST\\\', data: zapros, dataType: json,

error: function (infa){eval(infa.error);},

success: function(infa) {eval(infa.succes);}

});

}

И условия выполнения в файле bonus.php

// Какие то проверки

...........................................

if(isset($_POST[\\\"fac\\\"])){

if($_POST[\\\"fac\\\"] == \\\'bonus\\\'){

Получение бонуса...

}else{

error =\\\'Ошибка запроса\\\';

}

}

.................................

// Какой то вывод

Суть вопроса в том что все работает хорошо $_POST[\\\"fac\\\"] == \\\'bonus\\\'  и все работает хорошо бонус начисляется , но возникает  какой то  косяк а именно:

Если взять и через консоль разработчика в  браузере(просмотреть код) поменять например  в  кнопке вместо fac=bonus на fac=bonus23 и нажать на кнопку, то он должен показать код ошибки \\\"error \\\" т.к.  bonus23!=bonus но происходит другая вещь, бонус все равно начисляется. Т.е. сколько не меняй в файле many.php значение  \\\"fac\\\" через браузер , в bonus.php значение  $_POST[\\\"fac\\\"] посылается как мы указали  в файле many.php и он не как на изменения через браузер не реагирует.

Вопрос? Как сделать так что бы на изменения через браузер он реагировал т.е. если человек указал через браузер fac=bonus121 то в bonus.php $_POST[\\\"fac\\\"]  = bonus121  и выводилась ошибка?

А вы пишете неправильное имя имено добавляя в конце пару цыфр? Пробовали в браузере открыть ф12 и посмотреть как реагирует консоль на нажатие кнопки?
В именах нельзя указывать цифры в начале имени переменой, я надеюсь вы не указываете их в начале имени?

Даже если удалишь полностью значение fac  т.е. <span class=\\\"green\\\" onclick=\\\"post(\\\'bonus.php\\\', \\\'fac=\\\');\\\">Получить бонус!</span>, то  бонус все равно начисляется. Проверял через echo\\\"\\\'.$_POST[\\\"fac\\\"].\\\'\\\" значение  $_POST[\\\"fac\\\"] = bonus, хотя я удалил его совсем. Значения применяю в выполнение.

PS

Сайт на https
Ответ на: Artsem · 8 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: Pretorian от 12.02.2018, 19:55</div>\r\n<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: Artsem от 12.02.2018, 19:52</div>\r\nЕсть кнопка для...”
user avatar
8 лет назад
Сообщений: 36
8 лет назад

Цитата: Pretorian от 12.02.2018, 19:59
в любом сулчае другое имя не пройдет эту проверку
f(isset($_POST[\\\"fac\\\"])){

if($_POST[\\\"fac\\\"] == \\\'bonus\\\'){

разве что после else у вас стоит тот же самый mysql запрос что и в случае прохождения проверки. Было бы не плохо если бы вы написали полный код кнопки, события и запроса, безусловно ценные коды для вас в нутри проверки можете затереть.

 

<?@session_start();

if($_SERVER[\\\'HTTP_X_REQUESTED_WITH\\\'] == \\\'XMLHttpRequest\\\') {

$username = (isset($_SESSION[\\\"username\\\"]) ) ? $_SESSION[\\\"username\\\"] :  false;

if($username!=false){

if(isset($_POST[\\\"fac\\\"])){

if($_POST[\\\"fac\\\"] == \\\'bonus\\\'){

require_once($_SERVER[\\\'DOCUMENT_ROOT\\\'].\\\'/class/base.php\\\');

Получение бонуса...

$mysqli->close();

}else{

$eror =\\\'Ошибка запроса\\\';

}

if($eror != \\\'0\\\'){

$error .= \\\"error(\\\'<div class=\\\\\\\"error\\\\\\\">\\\".$eror.\\\"</div>\\\',\\\'#error\\\');\\\";

}

........

}

}

}?>
Ответ на: Artsem · 8 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: Pretorian от 12.02.2018, 19:59</div>\r\nв любом сулчае другое имя не пройдет эту проверку\r\nf(isset($_POST[\\\"fac\\\"])){\r\n\r\nif($_POST[\\\"f...”
user avatar
13 лет назад
Сообщений: 1859
8 лет назад
по идее на этом все должно было остановиться\\\"\\\"

а вы проверяли точно ли браузер редактирует хтмл? Вы пробовали делать лживое имя с блокнота редактируя файл, будет ли так работать, ради экспермента, и можете написать полный код обработчика который отправляет запрос на аякс js
Ответ на: Pretorian · 8 лет назад
“по идее на этом все должно было остановиться<img src=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAB4AAAAQ4CAIAAABnsVYUAAAgAElEQVR4nOy9a1hU5R7/Pc6stYb+z5vn+j9v9rX3ix0mSjDIaQA5CnIUBEEBRVTOB0ckMFBI8...”
user avatar
13 лет назад
Сообщений: 317
8 лет назад
У тебя обработчик не перенавешивается. Через консоль вызови код и так смотри.

post(\\\'bonus.php\\\', \\\'fac=\\\')
Ответ на: Misha · 8 лет назад
“У тебя обработчик не перенавешивается. Через консоль вызови код и так смотри.\r\n\r\npost(\\\'bonus.php\\\', \\\'fac=\\\')”
user avatar
8 лет назад
Сообщений: 36
8 лет назад

Цитата: Misha от 12.02.2018, 21:05
У тебя обработчик не перенавешивается. Через консоль вызови код и так смотри.

post(\\\'bonus.php\\\', \\\'fac=\\\')

Через консоль получилось ошибка сработала. Тогда я может ни правильно применяю  HTML для  выполнения.

Я делаю так:

1) Жму f12(или правой кнопкой мыши просмотреть код элемента). Нахожусь во вкладке Elements

2) Навожу на  код кнопки и правой кнопкой мыши в меню выбираю  Edit as HTML

3) Редактирую и просто, выхожу из редактированной части (кликая на другой код в HTML), и мои изменения остаются.

4) Потом я нажимаю на кнопку и вижу результат который вам описываю.

PS

На css же так работает!(Ну длину там, цвет и т.д.). Все делаю на локальном сервере Openserver 5.2.2.0. Может еще дело в том что у меня включен редирект на https:

#Убираем www

RewriteCond %{HTTP_HOST} ^www\\\\.(.*)$ [NC]

RewriteCond %{HTTP_HOST} ^[^www\\\\.].*$ [NC]

RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

#Для HTTPS

RewriteCond %{HTTPS} off

RewriteCond %{HTTP:X-Forwarded-Proto} !https

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

 
Ответ на: Artsem · 8 лет назад
“<blockquote>\r\n<div class=\\\"quotetitle\\\">Цитата: Misha от 12.02.2018, 21:05</div>\r\nУ тебя обработчик не перенавешивается. Через консоль вызови код и так смотри.\r\n\r\npost(\\\'bonus.php\\\', \...”
Ответить