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

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

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

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

Cформировать ссылку для редактирования данных из бд

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

Kauperwood

Вывожу из базы данных контент, допустим рядом с каждой выведенной записью кнопка "редактировать", вопрос как сформировать такой переход.
тоесть вывести на экран в текстовое поле я могу, а через кнопку чет не допираю как. У меня есть близкий к решению пример:
editor.php
Код:
<table border="1" align="center">
<?php
$sql = mysql_query('SELECT*FROM content');
while($record = mysql_fetch_array($sql))
{
print '<tr><td>'.$record['pagecontent'].'</td><td><a href="editor.php?page_title='.$record['pagecontent'].
'">Редактировать</a></td></tr>';
}
?>
</table>
<?php
$sql = mysql_query("select * FROM content WHERE pageid='".$page_title."'");
while($record = mysql_fetch_array($sql))
{
$content=$record['pagecontent'];
}
?>
<form action="editor.php" method="post">
<table width="100%" align="center">
<tr>
<td align="center"><textarea name="text_edit" cols="80" rows="15"><? print $content; ?></textarea></td>
</tr>
<tr>
<td align="center"><input name="save" type="submit" value="Сохранить"></td>
</tr>
</table>
</form>
сказано: "Когда на такой линк нажимает пользователь, он на ту же самую страницу возвращается, однако теперь с определенным значением переменной $page_title"
вот этот момент \\ <a href="editor.php?page_title='.$record['pagecontent'].'">Редактировать</a>'; // не пойму как надо изменить, там ошибка и вся ячейка идет в строку браузера, не могу понять как таким образом данные записываються в переменную, как записать подскажите пожалуйста.
 
D

Dock1100

Если я правильно понял то:
Есть таблица в форме:
Столбик с кучей чекбокстовЗаголовик топикаСодержание топика... Чекбокс1рисунок карандашаЗаголовик топика1Содержание топика.1.. Чекбокс2рисунок карандашаЗаголовик топика2Содержание топика2...
Чекбокс <input type="checkbox" name="id_s[]" value="id"/>
где id - ID топика(число)
Рисунок с карандашом <img src="images/toolbar/edit.png" onclick="select_id_s($c); submit();"/>
где $c - порядковый номер чекбокса в таблице ($c<>id(ну равнятся может, я к тому что это не одно и тоже))
<!--shcode--><pre><code class='java'>function select_id_s(id)
{
for (var i=0; i < document.editor['id_s[]'].length; i++) document.editor['id_s[]'].checked = false;
document.editor['id_s[]'][id].checked = true;
}[/CODE]
чтение масива(масив с id топика) в скрипте
PHP:
if (isset($_POST['id_s']))
{
$id_s=$_POST['id_s'];
} else 
$id_s='';
а далее работаю с $id_s как с масивом.
PHP:
$k=-1;
foreach ($id_s as $b) 
{ 
$k++;
echo "id_s[$k]=$b"; 
}
 
K

Kauperwood

Это уже поглубже... если капнуть, то может и да.. немного не понятен механизм, может есть пример в сети почитать или в личку?

В моем случае мне нужно только исходя из примера соорудить ссылку при переходе на которую редактировать ячейку данных в textarea, а от нее уже плясать, это то как я думал, возможно я не прав, не знаю еще пока. Вот с тем примером.
Например у меня выведены на экран из бд два поля:
1.Приивиет медведь.
2.Зоя варила супец.
справа от каждого поля кнопа "Редактировать"
снизу текстарея, - жму на второе поле "редактировать" и вижу что "зоя варила cупец" появилось в текстарее, дальше правлю,сохраняю с этим вопросов нет.
День "первый" заканчиваеться....начинается "первая" ночь)))
 
D

Dock1100

Это уже поглубже... если капнуть, то может и да.. немного не понятен механизм, может есть пример в сети почитать или в личку?
Моё мега ацкое "творение" : (ацтой полный).
В моем случае мне нужно только исходя из примера соорудить ссылку при переходе на которую редактировать ячейку данных в textarea, а от нее уже плясать, это то как я думал, возможно я не прав, не знаю еще пока.
А что мешает сделать ссылку както так: edit.php?topic_id=X (где X - id топика )?
 
T

typak

Та так как формировал так и формируеш тока обработчик делаеш
типа если существует $b то делаем выборку из бд с условием where id = $b с нужными значениями
и переменные с формы присваивают значение переменным выборки
, а если не существует $b то переменные из формы присваивают пусто.

Кароче и так каждый раз клацая по ссылке в форму будут вписыватся нужные значения.

Ща подредактирую код:

PHP:
.
.
.
<table border="1" align="center">
<?php
$sql = mysql_query('SELECT*FROM content');
while($record = mysql_fetch_array($sql))
{
print '<tr><td>'.$record['pagecontent'].'</td><td><a href="editor.php?pageid='.$record['pageid'].//ссылки формируеш по ПК
'">Редактировать</a></td></tr>';
}
?>
</table>
<?php
//а тут делаеш обработчик 
//Тут проверяеш есть ли ключь если есть то форму заполняеш данными строки с переданным ключом
//если нет ключа, то выводиш пустую форму
$pageid = $_GET['pageid']
if(isset($pageid))//если существует, то делаем выборку
{
$sql = mysql_query("select * FROM content WHERE pageid='".$pageid."'");
while($record = mysql_fetch_array($sql))
{
$content=$record['pagecontent'];
}
} 
else
{
$content='';
}
?>
<form action="editor.php" method="post">
<table width="100%" align="center">
<tr>
<td align="center"><textarea name="text_edit" cols="80" rows="15"><? print $content; ?></textarea></td>
</tr>
<tr>
<td align="center"><input name="save" type="submit" value="Сохранить"></td>
</tr>
</table>
</form>
.
.
.
Отак будет выводить как ты хочеш!!! :)

Проще некуда "детский вопрос" :rolleyes:


А шо это ты пишеш ? Зачем такой вывод нужен ?
 
K

Kauperwood

Моё мега ацкое "творение" : админка логин : admin пароль : 1234 (ацтой полный).
поклацал, с пивом покатит, понравилось что можно выбрать область для вставок, и смайлы))))
а редактор самописный?

Отак будет выводить как ты хочеш!!!
пашет :ithx:

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


PS. Поражаюсь тому, какие иногда попадаются руководства :ya_lamo:
 
D

Dock1100

а редактор самописный?
Да, левая только процедура вставки текста в тектареа, а всё остальное самопал, причём не очень качаственный(особенно если учитывать что всё писалось за 1,5 суток, попутно рубаясь в Hitman), но работает :ya_lamo: .
только начал этим заниматься
аналогично.
 
K

Kauperwood

сильно решил не изощряться втыкнул к себе tinimce, - быстренько работает))
в учебных целях конечно полезно написать и свой редактор, надо будет почитать
 
T

typak

Моё мега ацкое "творение" : админка логин : admin пароль : 1234 (ацтой полный).
редактор норм а можеш скинуть Javascript функцию для вставки в текстовую область бб-кода , а то моя функция вставлять вставляет а тока курсор потом самуму приходится на место ставить, да и если выдиляеш строку и нажимаеш на вставку бб-кода
ну например курсива необрамляет его, а рядом.

Вот моя функция перекопированная
Код:
<script language='JavaScript' type='text/javascript'><!--Скрипт который добавляет бб-код в текстовое поле -->
<!--
function tag(text1, text2)
{
if ((document.selection))
{
document.form.description.focus();
document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2;
} else document.form.description.value += text1+text2;
}
//-->
</script>

Мож там чо изменить надо какую строку или чо добавить
Вообщем проблему еще раз повторю вставлять то теги вставляет а от курсо потом самому пириходится наместо ставить и када выделяеш текст, текст не обрамляется в теги.

Да, левая только процедура вставки текста в тектареа, а всё остальное самопал, причём не очень качаственный(особенно если учитывать что всё писалось за 1,5 суток, попутно рубаясь в Hitman), но работает .

От мне та процедура вставки текст в текстареа и нада
 
D

Dock1100

Процедуру вставки текста выдрал с какого-то форума, сказать немогу поскольку страница была в закладках, а винду недавно переставлял.
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Ява:</div></div><div class="sp-body"><div class="sp-content">
JavaScript:
function surroundText(text1, text2, textarea) {
//textarea = xbb_textarea;
// Can a text range be created?
if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange) {
var caretPos = textarea.caretPos, temp_length = caretPos.text.length;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;
if (temp_length == 0) {
caretPos.moveStart("character", -text2.length);
caretPos.moveEnd("character", -text2.length);
caretPos.select();
}
else
textarea.focus(caretPos);
}
// Mozilla text range wrap.
else if (typeof(textarea.selectionStart) != "undefined") {
var begin = textarea.value.substr(0, textarea.selectionStart);
var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
var end = textarea.value.substr(textarea.selectionEnd);
var newCursorPos = textarea.selectionStart;
var scrollPos = textarea.scrollTop;

textarea.value = begin + text1 + selection + text2 + end;

if (textarea.setSelectionRange) {
if (selection.length == 0)
textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
else
textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
textarea.focus();
}
textarea.scrollTop = scrollPos;
}
// Just put them on the end, then.
else {
textarea.value += text1 + text2;
textarea.focus(textarea.value.length - 1);
}
}

// Remember the current position.
function storeCaret(text) {
// Only bother if it will be useful.
if (typeof(text.createTextRange) != "undefined")
text.caretPos = document.selection.createRange().duplicate();
}

function insertTag(tag_begin, tag_end, textarea_id) {
textarea=document.getElementById(textarea_id);
surroundText(tag_begin, tag_end , textarea);
}
//........... далее идет процедуры вставки списка, ссылки... дописаные мною
function insertLink(tag, message, text, textarea_name) {
var url = prompt( message, text, '');
if (! url) { return false; }
insertTag('[' + tag + '='+ url+']','[/' + tag + ']', textarea_name);
}

function insertLink2(tags, textarea_name,query_count,query_message, query_text) {
var tag__='';
for (n=0; n<=query_count-1;n++)
{
var url = prompt(query_message[n], query_text[n], ''); 
if (! url) { return false; }
tag__=tag__+tags[n]+'='+url+' ';
}
insertTag('[' + tag__ +'/]', '', textarea_name);
}

function insertLink3(tag, message, text, textarea_name) {
var url = prompt( message, text, '');
if (! url) { return false; }
insertTag('[' + tag +']',url + '[/' + tag + ']', textarea_name);
}

function insertLink4(tags, textarea_name,query_count,query_message, query_text) {
var tag__='';
for (n=0; n<=query_count-1;n++)
{
var url = prompt(query_message[n], query_text[n], ''); 
if (! url) { return false; }
tag__=tag__+tags[n]+'='+url+' ';
}
insertTag('['+tag__+']','[/'+tags[0]+']', textarea_name);
}

function insertList(textarea_name) {
var tag__='[list]';
k=0;
ind=true;
while (ind==true) 
{
k++;
var url = prompt('Создание списка', 'Введите элемент списка №'+k, ''); 
if (url)
{
tag__=tag__+'[*]'+url+' ';
}
else
{
ind=false;
}
}
insertTag(tag__+'[/list]','', textarea_name);
}
Текстареа:
<!--shcode--><pre><code class='html'><textarea id="message" name="message" onclick='position()' onblur='position()'>
бла-бла-бла
</textarea>[/CODE]

Кнопка вставки в текстареа:
<!--shcode--><pre><code class='html'><img src="images/toolbar/text_bold.png" onClick="insertTag('','','message')" />[/CODE]
ОФФТОП: Это мое 600-ое сообщение :)
 
T

typak

Спасибо. Прикрутил норм работает. Свой редактор почти готов
 
Мы в соцсетях:

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