Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: добавление текста в бд, в котором также есть ссылки
 
 автор: MadeInUSSR   (15.10.2006 в 13:56)   письмо автору
 
 

как я поняла чтоб добавить в бд текст (с хтмл оформлением) нужно все тэги заменить на искусственные (с целью безопасности?!)
как указано тут
http://www.softtime.ru/bookphp/gl11_1.php

    $msg = nl2br($msg);
    $msg = str_replace("[u]","<u>",$msg);
    $msg = str_replace("[U]","<u>",$msg);
    $msg = str_replace("","<i>",$msg);
    $msg = str_replace("[I]","<i>",$msg);
    $msg = str_replace("","<B>",$msg);
    $msg = str_replace("[B]","<B>",$msg);
    $msg = str_replace("","<SUB>",$msg);
    $msg = str_replace("[SUB]","<SUB>",$msg);
    $msg = str_replace("","<SUP>",$msg);
    $msg = str_replace("[SUP]","<SUP>",$msg);
    $msg = str_replace("[/u]","</u>",$msg);
    $msg = str_replace("[/U]","</u>",$msg);
    $msg = str_replace("
","</i>",$msg);
    $msg = str_replace("[/I]","</i>",$msg);
    $msg = str_replace("
","</B>",$msg);
    $msg = str_replace("[/B]","</B>",$msg);
    $msg = str_replace("","</SUB>",$msg);
    $msg = str_replace("[/sub]","</SUB>",$msg);
    $msg = str_replace("","</SUP>",$msg);
    $msg = str_replace("[/sup]","</SUP>",$msg);
    $msg = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a
                       href=\\2>\\2</a>\\3",$msg);
    $msg = str_replace("\n"," ",$msg);
    $msg = str_replace("\r"," ",$msg);



... а что делать с сылками? как их безопасно добавить в бд...
например в тексте есть ссылка

<a href="http://ya.ru">Yandex</a> 

как тут быть? мне нужна ссылка именно в таком оформлении...

   
 
 автор: Саня   (15.10.2006 в 15:52)   письмо автору
 
   для: MadeInUSSR   (15.10.2006 в 13:56)
 

> как я поняла чтоб добавить в бд текст (с хтмл оформлением) нужно все тэги заменить
> на искусственные (с целью безопасности?!)

Нет. С целью безопасности достаточно воспользоваться функцией mysql_escape_string() и спокойно добавлять текст в БД. А псевдотеги лучше преобразовывать при выводе текста на экран.

   
 
 автор: MadeInUSSR   (15.10.2006 в 16:00)   письмо автору
 
   для: Саня   (15.10.2006 в 15:52)
 

mysql_escape_string() то есть пользоваться этой функцией и добавлять в бд чистый html ? я правильно поняла?

   
 
 автор: Spayker   (15.10.2006 в 16:15)   письмо автору
 
   для: MadeInUSSR   (15.10.2006 в 16:00)
 

Да, а при выводи пользоваться фукцией htmlspecialchars

   
 
 автор: MadeInUSSR   (15.10.2006 в 18:07)   письмо автору
 
   для: Spayker   (15.10.2006 в 16:15)
 

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

<?php
include 'config.php' ;
$news_text=$HTTP_POST_VARS['add_news'];
if (!
$news_text)
    {
    echo 
'Введите новость!';
    exit;
    }



$news_text=addslashes($news_text);

$db mysql_pconnect ($dbhost$dbuser$dbpass);
if (!
$db)
    {
    echo 
'Ошибка';
    exit;
    }
mysql_escape_string($news_text);
mysql_select_db($dbname);
$query="insert into news values
       (0,now(),'"
.$news_text."')";
$result=mysql_query($query);
if (!
$result)
     echo 
"Ни фига!";
else
{
echo 
"Новость успешно добавлена! <a href=\"admin.html\">Перейдите по этой ссылке для дальнейшего администратирования</a>";
}
?>


а вот для вывода:


        <?php
include 'admin/config.php' ;
$nm=1;
$db mysql_pconnect ($dbhost$dbuser$dbpass);
if (!
$db)
    {
    echo 
'Error';
    exit;
    }
mysql_select_db($dbname);
  
$ath=mysql_query("SELECT * FROM news order by  news_date desc LIMIT $nm;");
if (!
$ath)
  {
  echo 
"Bad";
  exit ();
  }
 else
  {
    while  (
$news=mysql_fetch_array($ath))
             {
             
$text=$news['news_text'];

             
$words=explode(" "$text);
             
$text '';
             for (
$i=0$i<10000$i++)
             
$text.=$words[$i].' ';
              
$news_text=stripslashes($news_text);
             echo 
$text."<br />";
             }



  }

?>

   
 
 автор: Spayker   (15.10.2006 в 20:38)   письмо автору
 
   для: MadeInUSSR   (15.10.2006 в 18:07)
 

Помоему так


<?php
include 'config.php' ;
$news_text=$_POST['add_news'];
if (!
$news_text)
    {
    echo 
'&#194;&#226;&#229;&#228;&#232;&#242;&#229; &#237;&#238;&#226;&#238;&#241;&#242;&#252;!';
    exit;
    }
$news_text=addslashes($news_text);

$db mysql_pconnect ($dbhost$dbuser$dbpass);
if (!
$db)
    {
    echo 
'&#206;&#248;&#232;&#225;&#234;&#224;';
    exit;
    }
if (!
get_magic_quotes_gpc())
{
mysql_escape_string($news_text);
}
mysql_select_db($dbname);
$query="insert into news values
       (0,now(),'"
.$news_text."')";
$result=mysql_query($query);
if (!
$result)
     echo 
"&#205;&#232; &#244;&#232;&#227;&#224;!";
else
{
echo 
"Новость успешно добавлена! <a href=\"admin.html\">Перейдите по этой ссылке для дальнейшего администратирования</a>";
}
?>



<?php
include 'admin/config.php' ;
$nm=1;
$db mysql_pconnect ($dbhost$dbuser$dbpass);
if (!
$db)
    {
    echo 
'Error';
    exit;
    }
mysql_select_db($dbname);
  
$ath=mysql_query("SELECT * FROM news order by  news_date desc LIMIT $nm;");
if (!
$ath)
  {
  echo 
"Bad";
  exit ();
  }
 else
  {
    while  (
$news=mysql_fetch_array($ath))
             {
             
$text=$news['news_text'];
             
$words=explode(" "$text);
             
$text '';
             for (
$i=0$i<10000$i++)
             
$text.=$words[$i].' ';
              
$news_text=stripslashes($news_text);
             echo 
htmlspecialchars($text)."<br />";
             }
  }
?>

   
 
 автор: MadeInUSSR   (16.10.2006 в 06:40)   письмо автору
 
   для: Spayker   (15.10.2006 в 20:38)
 

попробую вечером . спасибо

   
 
 автор: MadeInUSSR   (17.10.2006 в 19:37)   письмо автору
 
   для: Spayker   (15.10.2006 в 20:38)
 

при выводе получается такое

<a href=\"http://www.ya.ru\">Яху</a>

   
 
 автор: Whi-teOoS   (15.10.2006 в 20:36)   письмо автору
 
   для: MadeInUSSR   (15.10.2006 в 13:56)
 

Может я че не понял, но

$msg = eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a href=\\2>\\2</a>\\3",$msg);


Редактирует ссылки...

ЗЫ: Ссылка перед редактированием имеет вид [url] link [/url]

   
 
 автор: MadeInUSSR   (16.10.2006 в 06:37)   письмо автору
 
   для: Whi-teOoS   (15.10.2006 в 20:36)
 

то есть вместо такой ссылки

<a href="http://ya.ru">Yandex</a>

я получаю такую..

http://ya.ru

а мне нужен первый вариант.. поэтому и обратилась сюда


и еще хочу уточнить, что это

<a href="http://ya.ru">Yandex</a>  


должно быть выводом в хтмл коде (то есть вид будет таков Yandex, а под ним скрывается ссылка)

помогите.. плиз

   
 
 автор: Poison   (17.10.2006 в 23:22)   письмо автору
 
   для: MadeInUSSR   (16.10.2006 в 06:37)
 

Воть что получилось=) Сильно не тестировал но вродь все норм:)

Config.php
<?php

$mySQLhost        
="localhost";
$mySQLuser        ="root";
$mySQLpass        ="";
$mySQLname        ="test";

$mySQLconnect = @mysql_connect($mySQLhost$mySQLuser$mySQLpass);
$mySQLselect = @mysql_select_db($mySQLname);

if (!
$mySQLconnect) {
    die(
"<div style='font-family:Verdana;font-size:13px;text-align:center;color:#55555;'><b>Ошибка при подключении к базе \"".$mySQLname."\"</b></div>");
    exit();
}

if (!
$mySQLselect) {
    die(
"<div style='font-family:Verdana;font-size:13px;text-align:center;color:#55555;'><b>Ошибка при выборе базы \"".$mySQLname."\"</b></div>");
    exit();
}

// MySQL Функции \\
function toMySQL($subject) {
    
$subject stripslashes($subject);
    
mysql_escape_string($subject);
    
$search = array("\"""'""\\");
    
$replace = array("&quot;""&#039;""&#092;");
    
$subject str_replace($search$replace$subject);
    return 
$subject;
}

function 
fromMySQL($subject) {
    
$search = array("&quot;""&#039;""&#092;");
    
$replace = array("\"""'""\\");
    
$subject str_replace($search$replace$subject);
    return 
$subject;
}
// MySQL Функции \\

?>


Добавление новости
<?php

require_once ("config.php");

$news_text toMySQL($_POST['add_news']);

if (!
$news_text) { 
    echo 
'Введите новость!'
    exit(); 
}
echo 
$news_text;
$result mysql_query("INSERT INTO news VALUES ('0', '{$news_text}')") ? "Новость успешно добавлена! <a href='admin.html'>Перейдите по этой ссылке для дальнейшего администратирования</a>" "Ни фига!";

if (isset(
$result)) {
    echo (
"<div><b>".$result."</b></div>");
}

?>


Показ новости
<?php
 
require_once ("config.php");

$nm "10";

if (
$result mysql_query("SELECT * FROM news_test ORDER BY  news_date DESC LIMIT $nm;")) { 
    while (
$row mysql_fetch_assoc($result)) {
        echo 
fromMySQL($row['news_text']);
    } 
} else {
    echo 
"Bad"
    exit (); 
}

?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования