Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Отправка POST к скрипту. [3]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (5): « 1 2 [3] 4 5 »   

> Без описания
vlados
Отправлено: 15 Февраля, 2012 - 20:12:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


Все равно редирект... Огорчение
 
 Top
IllusionMH
Отправлено: 15 Февраля, 2012 - 20:28:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Не понял
если функция возвращает false и в форме onsubmit="return validate();"
Раньше не перекидовало, значит что-то накосячили. Проверяйте внимательно.

Можно посмотреть что возвращает функция если ее просто так вызвать(не по сабмиту, а по нажатию кнопки)
 
 Top
OrmaJever
Отправлено: 15 Февраля, 2012 - 20:41:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




IllusionMH пишет:
OrmaJever, после второй(и более) проверки форма отправится, но классы останутся.

Согласен, но не всё ж я, надо немного самому додумать. Я не проверял этот скрипт, а просто писал на лету.
Вобще в идеале нужно создать одну функцию примерно такую

CODE (javascript):
скопировать код в буфер обмена
  1. function check(elem) {
  2.    if(elem.value == '') elem.className = 'error';
  3.    else elem.className = '';
  4. }

и на каждый елемент повесить эту функцию на событие onchange
CODE (html):
скопировать код в буфер обмена
  1. <input type="text" onchange="check(this)">

И зделать отдельную функцию на кнопку
CODE (javascript):
скопировать код в буфер обмена
  1. function validate() {
  2.  
  3.     for (i = 1; i <= 8; i++) {
  4.         if (ge("text" + i).value == '') return false;
  5.     }
  6.     $.post("core/sendfile.php", {
  7.         mod: ge("mod").value,
  8.         Url: ge("text1").value,
  9.         YO: ge("text2").value,
  10.         CMS: ge("text3").value,
  11.         YaG: ge("text4").value,
  12.         NumberPeople: ge("text5").value,
  13.         Price: ge("text6").value,
  14.         GoGetLinks: ge("check1").value,
  15.         GoGoodLinks: ge("check2").value,
  16.         Trustlinks: ge("check3").value,
  17.         MiraLinks: ge("check4").value,
  18.         Rotapost: ge("check5").value,
  19.         prSape: ge("check6").value,
  20.         Linkfeed: ge("check7").value,
  21.         AnotherInfo: ge("textarea1").value,
  22.         HowToSpeakWithYou: ge("text7").value,
  23.         Email: ge("text8").value,
  24.         AnotherContact: ge("textarea2").value
  25.     });
  26.    return true;
  27. }

Можно ещё что-то додумать


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vlados
Отправлено: 15 Февраля, 2012 - 20:47:02
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


Угу, нашел свою ошибу.
Но теперь появилась другая, чекбоксы неправильно отправляются, они отправляются в бузу со значением "on" в независимости от того, что чекбокс нажат или нет.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. function ge(elem) {
  3.     return document.getElementById(elem);
  4. }
  5.  
  6. function validate() {
  7.        
  8.     var err = false;
  9.        
  10.     for (i = 1; i <= 8; i++) {
  11.        if (ge("text" + i).value == "") {
  12.            ge("text" + i).className = 'error';
  13.                         err = true;
  14.        } else {
  15.            ge("text" + i).className = '';
  16.        }
  17.    }
  18.        
  19.         if( err == true){ return false;}
  20.    $.post("core/sendfile.php", {
  21.        mod: ge("mod").value,
  22.        Url: ge("text1").value,
  23.        YO: ge("text2").value,
  24.        CMS: ge("text3").value,
  25.        YaG: ge("text4").value,
  26.        NumberPeople: ge("text5").value,
  27.        Price: ge("text6").value,
  28.        GoGetLinks: ge("check1").value,
  29.        GoGoodLinks: ge("check2").value,
  30.        Trustlinks: ge("check3").value,
  31.        MiraLinks: ge("check4").value,
  32.        Rotapost: ge("check5").value,
  33.        prSape: ge("check6").value,
  34.        Linkfeed: ge("check7").value,
  35.        AnotherInfo: ge("textarea1").value,
  36.        HowToSpeakWithYou: ge("text7").value,
  37.        Email: ge("text8").value,
  38.        AnotherContact: ge("textarea2").value
  39.    });
  40.  
  41.    return false;
  42. }
  43.  


CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3.                                 <input type="checkbox" id="check1" name="1GoGetLinks" /> <label for="check1" class="inline">GoGetLinks</label><br>
  4.                                 <input type="checkbox" id="check2" name="1GoGoodLinks"/> <label for="check2" class="inline">GoGoodLinks</label><br>
  5.                                 <input type="checkbox" id="check3" name="1Trustlinks" /> <label for="check3" class="inline">Trustlinks</label><br>
  6.                                 <input type="checkbox" id="check4" name="1MiraLinks" /> <label for="check4" class="inline">MiraLinks</label><br>
  7.                                 <input type="checkbox" id="check5" name="1Rotapost" /> <label for="check5" class="inline">Rotapost</label><br>
  8.                                 <input type="checkbox" id="check6" name="1prSape" /> <label for="check6" class="inline">pr.Sape</label><br>
  9.                                 <input type="checkbox" id="check7" name="1Linkfeed" /> <label for="check7" class="inline">Linkfeed</label>
  10.  
  11.  

(Добавление)
о
 
 Top
OrmaJever
Отправлено: 15 Февраля, 2012 - 20:58:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




у чек бокса нету значения value, там вроде enabled возвращает булевое значение


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
vlados
Отправлено: 15 Февраля, 2012 - 21:00:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


В бд записывает "on", если нет велъю, если велъю = 1, то в бд записывает 1 в независимости от активности чекбокса. Огорчение

(Отредактировано автором: 15 Февраля, 2012 - 21:00:36)

 
 Top
IllusionMH
Отправлено: 15 Февраля, 2012 - 21:02:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




vlados, у чекбоксов нужно проверять
CODE (javascript):
скопировать код в буфер обмена
  1. ge("check1").checked;  //true|false

А на сервере проверять значение и делать соответствующую запись

(Отредактировано автором: 15 Февраля, 2012 - 21:02:57)

 
 Top
vlados
Отправлено: 15 Февраля, 2012 - 21:08:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


Ну если делать так как вы написали, то все равно в бд записываются "on"-
(Добавление)
Спойлер (Отобразить)
 
 Top
IllusionMH
Отправлено: 15 Февраля, 2012 - 21:21:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




vlados, на сервер они вроде приходят в виде строки, так что нужно сравнивать
PHP:
скопировать код в буфер обмена
  1. if($_POST['GoGetLinks'] === "true")
 
 Top
vlados
Отправлено: 15 Февраля, 2012 - 21:32:01
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


А вот такая конструкция должна работать?
CODE (htmlphp):
скопировать код в буфер обмена
  1. isset($_POST['GoGetLinks'])     ?$GoGetLinks=mysql_real_escape_string(if($_POST['GoGetLinks']==="true"){return 1;}else{return 0;}):$GoGetLinks="";

(Добавление)
в

(Отредактировано автором: 15 Февраля, 2012 - 21:33:06)

 
 Top
OrmaJever
Отправлено: 15 Февраля, 2012 - 21:49:23
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




PHP:
скопировать код в буфер обмена
  1. $GoGetLinks = isset($_POST['GoGetLinks'])  && $_POST['GoGetLinks']==="true" ? mysql_real_escape_string($_POST['GoGetLinks']) : '';


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
IllusionMH
Отправлено: 15 Февраля, 2012 - 21:52:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




vlados, думаю, что mysql_real_escape_string - явно лишнее, т.к. данные напрямую нигде не используются, а только строго сравниваются со строкой.
Точнее сказать не могу, т.к. я к php имею отдаленное отношение, больше с клиентской частью работаю.
(Добавление)
OrmaJever, тут я уже сам интересуюсь, зачем использовать mysql_real_escape_string, если мы уверены что это строка === "true"?
 
 Top
vlados
Отправлено: 15 Февраля, 2012 - 22:03:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


IllusionMH пишет:
vlados, думаю, что mysql_real_escape_string - явно лишнее, т.к. данные напрямую нигде не используются, а только строго сравниваются со строкой.

Как многие говорят, что бы сломать, сначала научись строить, со мной другая ситуация, сначала научился искать sql, php инъекции, уязвимости, а потом только строить.

Вроде сделал я, сам. Все работает всем спасибо.

Но без дурака, жизнь скушна. Поэтому у меня появилась еще одна проблема..

Есть панелька в ней ссылки на функцию:
Спойлер (Отобразить)


Функция должна получить значение (первое, второе), а потом создать пост запрос и получить ответ, а ответ вывести в пустом диве:

Спойлер (Отобразить)


Я немного подумал и пришел к странной функции, которая естественно это не работает, что тут нужно написать, чтобы все работало?

Файл который импортируется имеет такую структуру(по сути, это простая таблица):

Спойлер (Отобразить)


Цитата:

OrmaJever, тут я уже сам интересуюсь, зачем использовать mysql_real_escape_string, если мы уверены что это строка === "true"?


JavaScript выполняется на стороне клиента, поэтому его можно подменить обычным скриптом например на моем любимом питоне. Там можно передать некие пакости в виде "-1+union+select+1,2,3,4,5,6--"(это скуля). Ставлю я такую конструкцию везде, где работаю с БД, ибо лучше один раз перестраховаться, чем потом [нужное вставить].

(Отредактировано автором: 15 Февраля, 2012 - 22:08:19)

 
 Top
IllusionMH
Отправлено: 15 Февраля, 2012 - 22:23:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




CODE (html):
скопировать код в буфер обмена
  1. onclick="return getSites('1','2');"

Делается аналогично коду из документации jQuery
внутир функции
CODE (javascript):
скопировать код в буфер обмена
  1. $.post("test.php", { name: "John", time: "2pm" },//параметры из параметров функции
  2.   function(data){
  3.     alert("Data Loaded: " + data);//$("#tab").html(data)
  4.   });

(Добавление)
vlados пишет:
JavaScript выполняется на стороне клиента, поэтому его можно подменить обычным скриптом например на моем любимом питоне. Там можно передать некие пакости в виде "-1+union+select+1,2,3,4,5,6--"(это скуля). Ставлю я такую конструкцию везде, где работаю с БД, ибо лучше один раз перестраховаться, чем потом [нужное вставить].

Я знаю про инъекции и прочее. просто в конкретном случае мы точно уверены, что это строка "true". Разве, что как дань привычке и способ обезопасить свое будущее, если функция будет модифицироваться, и строгое сравнение будет убрано.

(Отредактировано автором: 15 Февраля, 2012 - 22:27:35)

 
 Top
vlados
Отправлено: 15 Февраля, 2012 - 22:28:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 391
Дата рег-ции: Май 2011  


Помог: 1 раз(а)

[+][+][+]


IllusionMH пишет:

Я знаю про инъекции и прочее. просто в конкретном случае мы точно уверены, что это строка "true";

Почему?
Например можно при отправке заменить True на что-нибудь гадкое.
(Добавление)
При отправке POST создается строка, вот пример чистой строки:
CODE (htmlphp):
скопировать код в буфер обмена
  1. id=12&gol=34&chaeckbox=true&checkbox2=false

Что же нам мешает сделать нечто подобное?
CODE (htmlphp):
скопировать код в буфер обмена
  1. id=12&gol=34&chaeckbox=-1&checkbox2=byaka
 
 Top
Страниц (5): « 1 2 [3] 4 5 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB