• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

чекбоксы

  • Автор темы Kauperwood
  • Дата начала
K

Kauperwood

предположим дано:

PHP:
function paste_in_textarea() {
function edit_content() { //cоздать ссылки на страницы которые уже есть в базе 
$tpl=""; 
$sql = mysql_query('SELECT * FROM content');// выводим поля, ссылки и чекбокс
while($record = mysql_fetch_array($sql)) {
$tpl .= '<tr><td>'.$record['pageid'].': '.$record['pagetittle'].'</td><td>
<a href="'.$_SERVER['PHP_SELF'].'?action=paste_in_textarea&pageid='.$record['pageid'].'"><img src="collapsed.gif"/></a>
<a href="'.$_SERVER['PHP_SELF'].'?action=paste_in_textarea&pagedel='.$record['pageid'].'&delete=y"><img src="close.png"/></a>



<input type="checkbox" name="chekthis" value="Yes" />
</td>';

}

return $tpl;
}//edit_content()
////paste_in_textarea.....

Нужно определить какой контент будет отображаться на сайте, а какой еще "сырой" и требует редакции
цель зайти на страницу с уже ранее отмеченными чекбоксами. пока в голову только пришло добавить поле в бд. только не знаю как автоматически отметить галочки
подскажите пожалуйста как лучше сделать запоминание чекбоксов после перезагрузки формы ?
 
K

Kauperwood

не знаю правильно ли я все понял, - добавил поле в бд, и по нем начал смотреть, как то так, странно конечно это все, особенно с $val-ом....
работает через раз!
потом напрягает каждый раз жать редактировать для того что бы галку записать и тд - это другая тема
Код:
function paste_in_textarea() {
function edit_content() { //cоздать ссылки на страницы которые уже есть в базе 
$tpl=""; 
$sql = mysql_query('SELECT * FROM content');// выводим поля, ссылки и чекбокс
while($record = mysql_fetch_array($sql)) {
if($record['cheked']==1){ $cheked = "Checked"; $val=0;}
if($record['cheked']==0){ $cheked = "noChecked";$val=1;}

$tpl .= '<tr><td>'.$record['pageid'].': '.$record['pagetittle'].'</td><td>
<a href="'.$_SERVER['PHP_SELF'].'?action=paste_in_textarea&pageid='.$record['pageid'].'"><img src="collapsed.gif"/></a>
<a href="'.$_SERVER['PHP_SELF'].'?action=paste_in_textarea&pagedel='.$record['pageid'].'&delete=y"><img src="close.png"/></a>
<input type="checkbox" name="chek" value="'.$val.'" '.$cheked.'/>
</td>';

}

return $tpl;
}//edit_content()
.....

вот теперь когда сохряняю, пишет мол ундефинатед индекс про место где сохраняется значения чекбокса, тю так если я его обнулю - работать не будет, какое ему значение надо?
 
V

vital

Моя ничего не понять. ДАвайте сначала - что и как надо, и как вы хотите это реализовать.
 
K

Kauperwood

создал новое поле - "cheked",
в функции paste_in_textarea() есть код "если кнопка save - апдейт контент" - туда вписал это поле "cheked". Поле чекед допустим или 1 или 0
Нужно добиться того что бы если отмечен чекбокс, он был отмечен после рефрешей и прочего подобного деяния
мы знаем что если в инпут записать "cheked" флажок ставится,
PHP:
sql = mysql_query('SELECT * FROM content');// выводим поля, ссылки и чекбокс
while($record = mysql_fetch_array($sql)) {
if($record['cheked']==1){ $cheked = "Checked"; $val=0;}
if($record['cheked']==0){ $cheked = "noChecked";$val=1;}

<input type="checkbox" name="chek" value="'.$val.'" '.$cheked.'/>

Вот оно вроде и работает, ставит флажок, снимает, а иногда не хочет ставить и снимать!
 
K

Kauperwood

потом я тут немного подумал, вообщем после этой проблемы хочу распространить влияние этих чекбоксов на сайтмап, общее меню и еще некоторые мелочи, надо только вот для начала разобраться как эти чекбоксы будут работать
 
V

vital

Во-первых
Это кто такое Придумал? 5 за логику, 2 за знание html. Нету такого атрибута. Если не надо галка, чекед просто не пишется.
Во-вторых
Не просто checked, а checked="checked", снова 2 за знание html.
В-третьих
а иногда не хочет ставить и снимать!
Отладчик и трассировка по шагам очень полезная штука. Настройте себе xdebug.
И в четвертых.
Перед тем как писать, стоит сначала поставить себя на место того, кто будет читать. Ну выражайте свои мысли так, что бы их можно было понять, и выражайте только те, которые надо. Как-то так.
Сори если грубо.

Добавлено: И еще могу выдать ругань по коду, если нервы крепкие и не обидишься)

Добавлено: И вот еще
if($record['cheked']==1){ $cheked = "Checked"; $val=0;???Почему 0, когда он вкл?}
if($record['cheked']==0){ $cheked = "noChecked";$val=1;????Почему 1 когда он выкл?}
 
K

Kauperwood

Vital я вас понял $cheked = "checked='checked'"
но не нашел пока решение пролемы,
не обижусь про ругань по коду, кстати это вы про функцию в функции?
PHP:
if($record['cheked']==1){ $cheked = "Checked"; $val=0;
- даже не знаю что ответить, это какая то магия + немного юмора)

Добавлено: потом по поводу сохранения, видимо надо добавить отдельную строчку две кода для сохранения в базу?
 
K

Kauperwood

Вообщем пишу что наконец я решил этот вопрос, но это было все же довольно проблематично
в этой ветке косвенно был затронут вопрос отображения чекбоксов из бд, но не сохранения в бд.
Для сохранения нужно скрытое поле (input hidden) и цикл.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!