Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Květoš 28. 11. 2021, 10:44:51

Název: Script PHP, podobné články
Přispěvatel: Květoš 28. 11. 2021, 10:44:51
Mám stránku php, na které chci zobrazovat několik náhodně vybraných články ze stejné podkategorie. Chci použít tento skript php, ale server vyhazuje chybu. Může se někdo na to podívat a poradit. Děkuji mockrát!

 //Kvido, 28.11.2021, zobrazení odkazů na podobné články v news

Kód: [Vybrat]
$news = dbquery("SELECT * FROM news WHERE ID = '$ID'");
while($row = dbarray($news))
{     
$samecat = $row['Subcategory'];
}

$samecats = explode(', ', $samecat);
  foreach($samecats as $similar){
      $scat[] = "Subcategory LIKE '%".$similar."%'";

  }
  echo implode(' OR ',$scat);
$news = dbquery($con,
"SELECT *
FROM news
WHERE (".implode(' OR ',$scat).")
AND NOT ID='$ID'
ORDER BY Rand()
LIMIT 0,3 ");
while($row2 = dbarray($samenews))
 {
 echo "<a href='news.php?ID=".$row2['ID']."'>&raquo "
     .$row2['Headline']."</a>";

 //End
Název: Re:Script PHP, podobné články
Přispěvatel: Filip Jirsák 28. 11. 2021, 11:00:19
Pokud opravdu chcete poradit, tak alespoň napište, jakou chybu server vyhazuje. Takhle je to jen hádanka.
Název: Re:Script PHP, podobné články
Přispěvatel: Death Walker 28. 11. 2021, 13:08:48
Predpokladam, podla toho kusu scriptu, hlasi ze $samenews neexistuje...
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 28. 11. 2021, 14:42:06
Kód: [Vybrat]
Fatal error: Uncaught Error: Call to undefined function query() in /var/www/localhost/infusions/news/templates/news.tpl.php:206 Stack trace: #0 /var/www/localhost/infusions/news/news.php(25): require_once() #1 {main} thrown in /var/www/localhost/infusions/news/templates/news.tpl.php on line 206

Kód: [Vybrat]
//Kvido, 28.11.2021, zobrazení odkazů na podobné články v news

$news = query("SELECT * FROM news_categories WHERE ID = '$ID'");
while($row = dbarray($news))
{     
$news_cat_name = $row['news_cat_name'];
}

Celý code stránky news.tpl.php:



$news_cat = explode(', ', $news_cat);
  foreach($news_cat as $similar){
      $scat[] = "news_categories LIKE '%".$similar."%'";

  }
  echo implode(' OR ',$scat);
$news = query($con,
"SELECT *
FROM news_categories
WHERE (".implode(' OR ',$scat).")
AND NOT ID='$ID'
ORDER BY Rand()
LIMIT 0,3 ");
while($row2 = dbarray($news))
 {
 echo "<a href='.INFUSIONS.'news/news.php?ID=".$row2['ID']."'>&raquo " .$row2['Z domova']."</a>";
}
 //End

Kód: [Vybrat]
<?php
/*-------------------------------------------------------+
| PHPFusion Content Management System
| Copyright (C) PHP Fusion Inc
| https://phpfusion.com/
+--------------------------------------------------------+
| Filename: news.tpl.php
| Author: PHP Fusion Development Team
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
defined('IN_FUSION') || exit;

if (!
function_exists('display_main_news')) {
    
/**
     * News Main Page Template
     *
     * @param $info
     */
    
function display_main_news($info) {
        
$locale fusion_get_locale();
        
$news_settings = \PHPFusion\News\NewsServer::getNewsSettings();

        echo 
'<div class="news-index">';
        
opentable($locale['news_0004']);
        echo 
render_breadcrumbs();

        
add_to_head('<link rel="stylesheet" href="'.INFUSIONS.'news/templates/css/news.css?v='.filemtime(INFUSIONS.'news/templates/css/news.css').'">');

        if (!empty(
$info['news_items'])) {
            echo 
'<div class="row equal-height">';
            foreach (
$info['news_items'] as $data) {
                
$link INFUSIONS.'news/news.php?readmore='.$data['news_id'];

                echo 
'<div class="col-xs-12 col-sm-12 col-md-6 col-lg-4 news-item m-b-20"><div>';
                    
$thumbnail = !empty($data['news_image_optimized']) ? $data['news_image_optimized'] : get_image('imagenotfound');
                    echo 
'<div class="overflow-hide item-image"><div class="item-thumbnail" style="background-image: url('.$thumbnail.')">';
                    echo 
'<a class="img-link" href="'.$link.'"></a>';
                    echo 
'</div></div>';

                    echo 
'<div class="post-content">';
                        echo 
'<div class="m-t-10 m-b-10"><a class="label label-info" href="'.INFUSIONS.'news/news.php?cat_id='.$data['news_cat_id'].'">'.$data['news_cat_name'].'</a></div>';
                        echo 
'<h3 class="post-title"><a href="'.$link.'">'.$data['news_subject'].'</a></h3>';

                        echo 
'<div class="post-meta">';
                            echo 
'<span class="m-r-5"><i class="fa fa-user"></i> '.profile_link($data['user_id'], $data['user_name'], $data['user_status']).'</span>';
                            echo 
'<span class="m-r-5"><i class="fa fa-clock-o"></i> '.showdate(fusion_get_settings('newsdate'), $data['news_date']).'</span>';
                            echo 
'<span><i class="fa fa-folder-o"></i> <a href="'.INFUSIONS.'news/news.php?cat_id='.$data['news_cat_id'].'">'.$data['news_cat_name'].'</a></span>';
                        echo 
'</div>';

                        echo 
'<div>'.trim_text(strip_tags($data['news_news']), 100).'</div>';

                        echo 
'<a href="'.$link.'">'.$locale['news_0001'].'</a>';
                    echo 
'</div>';
                echo 
'</div></div>';
            }
            echo 
'</div>';

            if (
$info['news_total_rows'] > $news_settings['news_pagination']) {
                
$type_start = isset($_GET['type']) ? 'type='.$_GET['type'].'&' '';
                
$cat_start = isset($_GET['cat_id']) ? 'cat_id='.$_GET['cat_id'].'&' '';
                echo 
'<div class="text-center m-t-10 m-b-10">';
                echo 
makepagenav($_GET['rowstart'], $news_settings['news_pagination'], $info['news_total_rows'], 3INFUSIONS.'news/news.php?'.$cat_start.$type_start);
                echo 
'</div>';
            }
        } else {
            echo 
'<div class="text-center">'.$locale['news_0005'].'</div>';
        }

        
closetable();
        echo 
'</div>';

        
$side_panel fusion_get_function('openside''');
        if (!empty(
$info['news_last_updated'])) {
            
$side_panel .= '<span class="m-r-10"><strong class="text-dark">'.$locale['news_0008'].':</strong> '.$info['news_last_updated'].'</span>';
        }

        if (!empty(
$info['news_filter'])) {
            
$side_panel .= '<ul class="block news-filter">';
            
$i 0;
            foreach (
$info['news_filter'] as $link => $title) {
                
$filter_active = (!isset($_GET['type']) && $i == 0) || isset($_GET['type']) && stristr($link$_GET['type']) ? ' text-dark' '';
                
$side_panel .= '<li><a href="'.$link.'" class="display-inline'.$filter_active.' m-r-10">'.$title.'</a></li>';
                
$i++;
            }
            
$side_panel .= '</ul>';
        }
        
$side_panel .= fusion_get_function('closeside');
        \
PHPFusion\Panels::addPanel('news_menu_panel'$side_panel, \PHPFusion\Panels::PANEL_RIGHTiGUEST);
        \
PHPFusion\Panels::addPanel('news_menu_panel'display_news_categories($info), \PHPFusion\Panels::PANEL_RIGHTiGUEST9);
    }
}

if (!
function_exists('render_news_item')) {
    
/**
     * News Item Page Template
     *
     * @param $info
     */
    
function render_news_item($info) {
        
$locale fusion_get_locale();
        
$data $info['news_item'];

        
opentable($locale['news_0004']);
        echo 
render_breadcrumbs();
        echo 
"<article class='news-item' style='display:block; width:100%; overflow:hidden;'>\n";
        if (!empty(
$data['news_admin_actions'])) {
            
$admin_actions $data['news_admin_actions'];
            echo 
"<div class='btn-group m-l-10 pull-right'>";
            echo 
"<a class='btn btn-default btn-sm' href='".$admin_actions['edit']['link']."' title='".$admin_actions['edit']['title']."' /><i class='fa fa-pencil'></i> ".$admin_actions['edit']['title']."</a> \n";
            echo 
"<a class='btn btn-danger btn-sm' href='".$admin_actions['delete']['link']."' title='".$admin_actions['delete']['title']."' /><i class='fa fa-trash'></i> ".$admin_actions['delete']['title']."</a>\n";
            echo 
"</div>\n";
        }
        echo 
"<h2 class='text-left m-t-0 m-b-0'>".$data['news_subject']."</h2>\n";
        echo 
"<div class='news_news text-dark m-t-20 m-b-20 overflow-hide'>\n";

        if (
$data['news_image_src']) {
            echo 
'<a href="'.$data['news_image_src'].'" class="news-image-overlay">';
            
$position $data['news_image_align'] == 'news-img-center' 'center-x m-b-10' $data['news_image_align'];
            
$width $data['news_image_align'] == 'news-img-center' '100%' '200px';
            echo 
'<img class="img-responsive '.$position.' m-r-10" style="width: '.$width.';" src="'.$data['news_image_src'].'" alt="'.$data['news_subject'].'"/>';
            echo 
'</a>';
        }

        echo 
$data['news_news'];
        echo 
$data['news_extended'];
        echo 
"</div>\n";
        echo 
$data['news_pagenav'];

        if (!empty(
$data['news_gallery']) && count($data['news_gallery']) > 1) {
            echo 
'<hr/>';
            echo 
'<h3>'.$locale['news_0019'].'</h3>';

            echo 
'<div class="overflow-hide m-b-20">';
            foreach (
$data['news_gallery'] as $id => $image) {
                echo 
'<div class="pull-left overflow-hide" style="width: 250px; height: 120px;">';
                echo 
colorbox(IMAGES_N.$image['news_image'], 'Image #'.$id);
                echo 
'</div>';
            }
            echo 
'</div>';
        }

        echo 
"<div class='well m-t-15 text-center'>\n";
        echo 
"<span class='news-action'><i class='fa fa-user'></i> ".profile_link($data['user_id'], $data['user_name'],
                
$data['user_status'])."</span>\n";
        echo 
"<span class='news-action m-l-10'><i class='fa fa-calendar'></i> ".showdate("newsdate"$data['news_datestamp'])."</span>\n";
        echo 
"<span class='news-action m-l-10'><i class='fa fa-eye'></i> <span class='text-dark'>".number_format($data['news_reads'])."</span>\n</span>";

        if (
$data['news_allow_comments'] && fusion_get_settings('comments_enabled') == 1) {
            echo 
'<i class="fa fa-comments-o m-l-10"></i> '.$data['news_display_comments'];
        }

        if (
$data['news_allow_ratings'] && fusion_get_settings('ratings_enabled') == 1) {
            echo 
$data['news_display_ratings'];
        }

        echo 
"<i class='fa fa-print m-l-10'></i> <a title='".$locale['news_0002']."' href='".BASEDIR."print.php?type=N&amp;item_id=".$data['news_id']."' target='_blank'>".$locale['print']."</a>";
        echo 
"</div>";
        echo 
"<!--news_sub_readmore-->";
       
       echo !isset(
$_GET['readmore']) && $data['news_ext'] == "y" "<div class='m-t-20'>\n<a href='".INFUSIONS."news/news.php?readmore=".$data['news_id']."' class='button'>".$locale['news_0001']."</a>\n</div>\n" "";

        echo 
$data['news_show_comments'] ? "<hr />".$data['news_show_comments']."\n" '';
        echo 
$data['news_show_ratings'] ? "<hr />".$data['news_show_ratings']."\n" '';

        echo 
"</article>\n";
        
closetable();

        \
PHPFusion\Panels::addPanel('news_menu_panel'display_news_categories($info), \PHPFusion\Panels::PANEL_RIGHTiGUEST9);
    }
}

if (!
function_exists('display_news_categories')) {
    function 
display_news_categories($info) {
        
$locale fusion_get_locale();
        
ob_start();
        
openside($locale['news_0009']);
        echo 
'<ul class="list-style-none">';
        foreach (
$info['news_categories'] as $cat) {
            echo 
'<li><a'.($cat['active'] ? ' class="text-dark"' '').' href="'.$cat['link'].'">'.$cat['name'].'</a></li>';

            if (!empty(
$cat['sub'])) {
                foreach (
$cat['sub'] as $sub_cat) {
                    echo 
'<li><a class="'.($sub_cat['active'] ? 'text-dark ' '').'p-l-15" href="'.$sub_cat['link'].'">'.$sub_cat['name'].'</a></li>';
                }
            }
        }
        echo 
'</ul>';
        
closeside();

        
$str ob_get_contents();
        
ob_end_clean();

        return 
$str;
    }
}

 
//Kvido, 28.11.2021, zobrazení odkazů na podobné články v news

$news query("SELECT * FROM news_categories WHERE ID = '$ID'");
while(
$row dbarray($news))
{     
$news_cat_name $row['news_cat_name'];
}

$news_cat explode(', '$news_cat);
  foreach(
$news_cat as $similar){
      
$scat[] = "news_categories LIKE '%".$similar."%'";

  }
  echo 
implode(' OR ',$scat);
$news query($con,
"SELECT * 
FROM news_categories 
WHERE ("
.implode(' OR ',$scat).") 
AND NOT ID='
$ID
ORDER BY Rand() 
LIMIT 0,3 "
);
while(
$row2 dbarray($news))
 {
 echo 
"<a href='.INFUSIONS.'news/news.php?ID=".$row2['ID']."'>&raquo " .$row2['Z domova']."</a>";
}
 
//End
/code]

Název: Re:Script PHP, podobné články
Přispěvatel: A.P.Hacker 28. 11. 2021, 14:59:06
odkud jste vzal ten script na konci?
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 28. 11. 2021, 15:02:17
https://stackoverflow-com.translate.goog/questions/21485941/displaying-links-for-similar-articles?_x_tr_sl=auto&_x_tr_tl=cs&_x_tr_hl=cs&_x_tr_pto=nui
 (https://stackoverflow-com.translate.goog/questions/21485941/displaying-links-for-similar-articles?_x_tr_sl=auto&_x_tr_tl=cs&_x_tr_hl=cs&_x_tr_pto=nui)
Název: Re:Script PHP, podobné články
Přispěvatel: A.P.Hacker 28. 11. 2021, 15:07:38
https://stackoverflow-com.translate.goog/questions/21485941/displaying-links-for-similar-articles?_x_tr_sl=auto&_x_tr_tl=cs&_x_tr_hl=cs&_x_tr_pto=nui
 (https://stackoverflow-com.translate.goog/questions/21485941/displaying-links-for-similar-articles?_x_tr_sl=auto&_x_tr_tl=cs&_x_tr_hl=cs&_x_tr_pto=nui)

proc jste prejmenoval mysqli_query a mysqli_fetch_array?

proc zrovna ten kod z SO? Ten tazatel jste vy?
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 28. 11. 2021, 15:09:45
Apache mě jede na mysql, pokud se nemýlim a v kodech PHP-fusion také mysqli nevidím... ?
Ten tazatel nejsem já, náhodou jsem návod na podobné stránky tam našel.
Název: Re:Script PHP, podobné články
Přispěvatel: A.P.Hacker 28. 11. 2021, 15:11:53
Apache mě jede na mysql, pokud se nemýlim a v kodech PHP-fusion také mysqli nevidím... ?

kde jste prisel na nazvy query a dbarray?
Název: Re:Script PHP, podobné články
Přispěvatel: A.P.Hacker 28. 11. 2021, 15:12:47
Ten tazatel nejsem já, náhodou jsem návod na podobné stránky tam našel.

to neni navod, snippet kodu vytrzeny z kontexu, ten tazatel v tom plave stejne jako vy.
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 28. 11. 2021, 15:22:58
Asi tohle nezvládnu.
Pokud můžete napsat funkční kód pro aplikaci php-fusion, mohu 01.12.2021 zaplatit práci.
Česká podpora RobiNN byla zrušena a na centrální podpoře
https://www.php-fusion.co.uk/infusions/forum/index.php?section=latest (https://www.php-fusion.co.uk/infusions/forum/index.php?section=latest) je neochotný, nemá čas.
Název: Re:Script PHP, podobné články
Přispěvatel: A.P.Hacker 28. 11. 2021, 15:35:18
Asi tohle nezvládnu.
Pokud můžete napsat funkční kód pro aplikaci php-fusion, mohu 01.12.2021 zaplatit práci.
Česká podpora RobiNN byla zrušena a na centrální podpoře
https://www.php-fusion.co.uk/infusions/forum/index.php?section=latest (https://www.php-fusion.co.uk/infusions/forum/index.php?section=latest) je neochotný, nemá čas.

ok, napise mi na email joosho0u@seznam.cz
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 01. 12. 2021, 15:45:09
Takto (viz. obrázek) si lištu podobné/související články představuji. Tedy dole ve footer pod textem konkretního článku. Aby související články byly jako linky, nejméně na 5 článků, které souvisí s kategorii blog-cats.

Code mám zatím tento, ale není ještě celý a funkční. Použil jsem:

Kód: [Vybrat]
openside("Politika - související články (ve výstavbě)");

srand(time());
$random = rand(1,3);
if ($random == 1 ) {
$result = dbquery("SELECT * FROM ".DB_BLOG." ORDER BY blog_datestamp DESC LIMIT 5");
}

else {
$result = dbquery("SELECT * FROM ".DB_BLOG." ORDER BY RAND() LIMIT 5");
}
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 01. 12. 2021, 15:47:10
Takto (viz. obrázek) si lištu podobné/související články (v kategorii BLOG) představuji. Tedy dole ve footer pod textem konkretního článku. Aby související články byly jako linky, nejméně na 5 článků, které souvisí s kategorii blog-cats.

Code mám zatím tento, ale není ještě celý a funkční. Použil jsem:

Kód: [Vybrat]
openside("Politika - související články (ve výstavbě)");

srand(time());
$random = rand(1,3);
if ($random == 1 ) {
$result = dbquery("SELECT * FROM ".DB_BLOG." ORDER BY blog_datestamp DESC LIMIT 5");
}

else {
$result = dbquery("SELECT * FROM ".DB_BLOG." ORDER BY RAND() LIMIT 5");
}
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 05. 12. 2021, 10:51:57
Tak konečně Související články v kategirii Politika/blog se mně již zobrazují.
Zde je kód:
Kód: [Vybrat]
//Kvetos, 05.12.2021 - funguje ve footer. Ale zobrazuje se jen 1 článek, nejde link na ostatní články (limit 5)!
echo '<div class="well text-center m-t-10 m-b-0">';
if (file_exists(INFUSIONS.'blog/templates/locale/'.LANGUAGE.'.php')) {
    $locale = fusion_get_locale('', INFUSIONS.'blog/templates/locale/'.LANGUAGE.'.php');
} else {
    $locale = fusion_get_locale('', INFUSIONS.'blog/templates/locale/Czech.php');
}
openside($locale['mrb_01']);
srand(time());
$random = rand(1,3);
if ($random == 4 ) {
$result = dbquery("SELECT * FROM ".DB_BLOG." ORDER BY news_datestamp DESC LIMIT 5");
}
else {
$result = dbquery("SELECT * FROM ".DB_BLOG." ORDER BY RAND() LIMIT 5");
}
$rows = dbrows($result);
if ($rows = 5){
$data = dbarray($result) ;

echo "<img src='".INFUSIONS."images/bullet.gif' alt='' /> <a href='".INFUSIONS."blog/blog.php?blog_id=".$data['blog_id']."'>".$data ['blog_subject']."$new</div><br />\n".stripslashes($data['blog_snippet']);
echo "</a>";
}
closeside();

Schází mě správný kód pro výpis 5 linků. Místo toho se otevírá celá stránka aktuálních článků.
Prosím o radu. Díky.

Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 05. 12. 2021, 13:01:47
Ještě zjednodušený text (horní řádky odstraněné):
Kód: [Vybrat]
//Kvetos, 05.12.2021 - blog.tpl.php ve footer. Ale zobrazuje se jen 1 článek, nejde link na ostatní články (limit 5)!
echo '<div class="well text-center m-t-10 m-b-0">';
{
    $locale = fusion_get_locale('', INFUSIONS.'infusions/blog/templates/locale/Czech.php');
}
openside($locale['mrb_01']);
srand(time());
$random = rand(1,3);
if ($random == 4 ) {
$result = dbquery("SELECT * FROM ".DB_BLOG." ORDER BY news_datestamp DESC LIMIT 5");
}
else {
$result = dbquery("SELECT * FROM ".DB_BLOG." ORDER BY RAND() LIMIT 5");
}
$rows = dbrows($result);
if ($rows = 5){
$data = dbarray($result) ;

echo "<a href='".INFUSIONS."blog/blog.php?blog_id=".$data['blog_id']."'>".$data ['blog_subject']."$new</div><br />\n".stripslashes($data['blog_title']);
echo "</a>";
}
closeside();
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 05. 12. 2021, 14:36:24
Další oprava, odkazy, link na článek je už funkční:

Kód: [Vybrat]
echo "<a href='".INFUSIONS."blog/blog.php?readmore=".$data['blog_id']."'>"

Zbývá tudíž jen aby se vypsal link na 5x článků.
????
Zde je ukázka na výpis Související články:
https://nekecamweb.cz/blog/2816/koalice-pirstan-se-rozpadne? (https://nekecamweb.cz/blog/2816/koalice-pirstan-se-rozpadne?)
Název: Re:Script PHP, podobné články
Přispěvatel: A.P.Hacker 05. 12. 2021, 14:52:29
ten kod z mnoha duvodu nemuze fungovat
Název: Re:Script PHP, podobné články
Přispěvatel: robin martinez 05. 12. 2021, 14:55:19
Kód: [Vybrat]
$rows = dbrows($result);

je snad nejaky pole z radky, takze musi fungovat neco jako

Kód: [Vybrat]
$rows = dbrows($result);

foreach($rows as $row) {
     echo "<a href=....";
}


jinak tohle je kouzelny, nechapu moc ucel :D

Kód: [Vybrat]
if ($rows = 5).....

Název: Re:Script PHP, podobné články
Přispěvatel: A.P.Hacker 05. 12. 2021, 15:07:29
jinak tohle je kouzelny, nechapu moc ucel :D

Kód: [Vybrat]
if ($rows = 5).....


je tam toho vic

Kód: [Vybrat]
$random = rand(1,3);
if ($random == 4 ) {
Název: Re:Script PHP, podobné články
Přispěvatel: robin martinez 05. 12. 2021, 15:40:36
je tam toho vic

Kód: [Vybrat]
$random = rand(1,3);
if ($random == 4 ) {

toho jsem si nevsiml  :-X
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 06. 12. 2021, 06:16:30
Tak jsem dnes ráno ještě vylepšil kód. Odkaz již 1 link otevírá:
Kód: [Vybrat]
//Kvetos, 06.12.2021 - blog.tpl.php ve footer. Ale zobrazuje se jen 1 článek, nejde link na ostatní (LIMIT 5)!
echo '<div class="well text-center m-t-10 m-b-0">';
{
    $locale = fusion_get_locale('', INFUSIONS.'infusions/blog/templates/locale/Czech.php');
}
openside("Politika - související články");
//openside($locale['mrb_01']);
srand(time());
$random = rand(1,3);
if ($random == 5 ) {
$result = dbquery("SELECT * FROM ".DB_BLOG." ORDER BY news_datestamp DESC LIMIT 5");
}
else {
$result = dbquery("SELECT * FROM ".DB_BLOG." ORDER BY RAND() LIMIT 5");
}
$rows = dbrows($result);
if ($rows = 5){
$data = dbarray($result) ;

echo "<a href='".INFUSIONS."blog/blog.php?readmore=".$data['blog_id']."'>".$data ['blog_subject']."$new</div><br />\n".stripslashes($data['blog_title']);
echo "</a></div>";
}
closeside();

Ještě by to chtělo otevřené další 4 linky. Zatím se tohle nedaři...
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 07. 12. 2021, 11:04:20
A s tímto již fungue:

Kód: [Vybrat]
<!-- Kvetos, 06.12.2021 - articles.tpl.php ve footer. -->

<div class="well text-center m-t-10 m-b-0">
<?php
openside
("Archiv - související články Politika");
//openside($locale['politika_001']);
$result dbquery("SELECT * FROM ".DB_BLOG."
   WHERE blog_id='"
.stripinput($_GET['readmore'])."'
   AND news_draft='0' LIMIT 5"
);

   
$data dbarray($result);
Název: Re:Script PHP, podobné články
Přispěvatel: robin martinez 07. 12. 2021, 12:59:56
ja nejak nechapu jestli mame reagovat nebo jestli je po nas vlastne neco pozadovano? Ptas se na pomerne zakladni veci a pokud nekomu delas webovky a tyhle veci neznas, tak nevim, jestli jsme schopni pomoci, navic vzhledem k tomu, ze celej web bude silne nachylnej na nejaky sql injection a pod. ;)
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 08. 12. 2021, 09:23:45
Díky za zájem a info.
Momentálně kód pro zobrazování podobných/related článků chodí mně to již dobře (viz. obrázek).
Pokud se týká xss, tak mně je jasné, že pole bych měl mít řešena tak, aby je šlo rekurzivně zentitovat přes funkci htmlspecialchars(), tedy všechny stringy v poli $data před výpisem. Standardně mám v hlavním souboru konkrétní kategorie, jako např. blog.php:
Kód: [Vybrat]
//xss
        $_GET['rowstart'] = (isset($_GET['rowstart']) && isnum..............................s hodnotou : 0;

A kódu pro přihlášení pak mám:
Kód: [Vybrat]
$username = htmlspecialchars(trim("$_POST[username]"));

$uniqueuser = $realm_db->query("SELECT `login` FROM `accounts` WHERE `login` = '$username'");

Zatím část kódu pro výpis z linků článků z databáze k souvisejícím článků je funkční:

Kód: [Vybrat]
openside("Archiv - související články Politika:");
   $data = dbarray($result);
   $related_blog = dbquery("SELECT * FROM ".DB_BLOG."
   WHERE ".groupaccess('blog_visibility')."
   AND (blog_start='0'||blog_start<=".time().")
   AND (blog_end='0'||blog_end>=".time().")
   AND blog_draft='0'
   AND blog_cat='".stripinput($data['blog_cat'])."'
   AND blog_id !='".stripinput($_GET['readmore'])."'
   ORDER BY RAND()
   DESC LIMIT 0,6");


Název: Re:Script PHP, podobné články
Přispěvatel: to_je_jedno 08. 12. 2021, 09:57:53
Brrr to jsem se osypal jen jsem zahledl zneni dotazu. Tohle skonci hacknutim od nejakyho zdejsiho ctenare. A ne, nemuze za to PHP.
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 08. 12. 2021, 10:26:14
No, nelekej se, ještě to není na ostrém.
A co tohle, to je také mimo mísu?
Kód: [Vybrat]
echo "<img src='".INFUSIONS."images/bullet.gif' alt='' /> <a href='infusions/articles/articles.php?article_id=".$data['article_id']."'>".$data ['article_subject']."$new</div><br />\n".stripslashes($data['article_snippet']);
echo "</a>";

nebo:
Kód: [Vybrat]
$news['news_image']."' title='".$news['news_subject']."' width='96%' height='auto' /></a><strong><a href='".BASEDIR."news.php?readmore=".$news['news_id']."'>".trimlink(strip_tags(stripslashes($news['news_subject'])), 39)."</a></strong>".trimlink(strip_tags(stripslashes($news['news_news'])), 69)."</td>\n</tr>\n";
Název: Re:Script PHP, podobné články
Přispěvatel: robin martinez 08. 12. 2021, 12:46:26
a otazka je jaka?

pro me konkretne to mimo misu je, protoze jakmile koukam do kodu dele jak 5 vterin a nechapu ho, nezajima me.
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 08. 12. 2021, 14:49:11
Tady je kód celý, který funguje:
Kód: [Vybrat]
//Kvetos, 06.12.2021 - news/Internet.tpl.php ve footer.
if (file_exists(INFUSIONS.'news/templates/locale/'.LANGUAGE.'.php')) {
    $locale = fusion_get_locale('', INFUSIONS.'news/templates/locale/'.LANGUAGE.'.php');
} else {
    $locale = fusion_get_locale('', INFUSIONS.'news/templates/locale/Czech.php/');
}
echo '<div class="well text-center m-t-10 m-b-0">';
openside($locale['internet_01']);
$result = dbquery("SELECT * FROM ".DB_NEWS."
   WHERE news_id='".stripinput($_GET['readmore'])."'
   AND news_draft='0' LIMIT 5");
   $data = dbarray($result);
   $related_news = dbquery("SELECT * FROM ".DB_NEWS."
   WHERE ".groupaccess('news_visibility')."
   AND (news_start='0'||news_start<=".time().")
   AND (news_end='0'||news_end>=".time().")
   AND news_draft='0'
   AND news_cat='".stripinput($data['news_cat'])."'
AND news_id !='".stripinput($_GET['readmore'])."'
   ORDER BY RAND()
   DESC LIMIT 0,6");

      echo"<div style='margin-left:auto; margin-right:auto;' class='tbl-border'>";
   if (dbrows($related_news)) {

   $i = 0;
      while ($related_news_data = dbarray($related_news)) {
      $row_color = ($i % 2 == 0 ? "tbl1" : "tbl2");
      $subject = trimlink(strip_tags(parseubb($related_news_data['news_subject'])), 35);
      echo "<div class='$row_color'><a href='".INFUSIONS."/news/news.php?readmore=".$related_news_data['news_id']."'>".$subject."</a><div  style='float: left; padding-right: 10px;'>".showdate("%d.%m.%Y %H:%M", $related_news_data['news_datestamp'])."</div>\n</div>\n";
   $i++;
      }
    }else{
      echo"<div style='text-align: center;'>Není žádný související článek Internet!</div>\n";
   }
   echo"</div>\n";
closeside();

Otázka:
Na první pohled, je ten kód nebezpečný.
Je dostačující použití stripinput nebo bych měl kromě toho použít metodu add_slashes?
Díky pouze za ANO - NE.
Název: Re:Script PHP, podobné články
Přispěvatel: robin martinez 09. 12. 2021, 11:34:51
ano
Název: Re:Script PHP, podobné články
Přispěvatel: none_ 09. 12. 2021, 14:04:18
Kvetosi, sice moje odpoved neni ANO/NE, ale stejne si ji neodpustim.

Okamzite se na to vykaslete. Hlavne, pokud na funkcnost vysledku mate navazane nejake finance. Pokud si prasite vlastni webik, tak asi smele do toho. Kazdy nejak zacina. Kazdopadne za pul roku se na tenhle kod podivate a budete se sam sebe ptat, co jsem tim sakra chtel rict. Podle toho vaseho kodu vam nikdo neporadi. Chyb tam bude jak much. Namatkou treba tohle nejspis nebude fungovat: fusion_get_locale('', INFUSIONS.'news/templates/locale/Czech.php/');

Pokud jde o bezpecnost, tak to vam nikdo nerekne. Nemate zadny systematicky pristup k reseni veci. Tzn jednou nekam placnete zavolani nejaky funkce, po druhy zase jine, po treti tam neni nic...
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 09. 12. 2021, 15:36:04
@none_
Moc díky za info ke konkrétnímu kódu.
Ale...
1/ fusion_get_locale('', INFUSIONS.'news/templates/locale/Czech.php/'); tam musí být, jinak se nezobrazí nadpis "Internet - související články" nad linky pro odkazy podobných článků. Jinak jsem to nevyřešil.
2/ A funguje to. Podívejte se na tu stránku (zcela nahoře jsou ty linky na podobné stránky):
https://nekecamweb.cz/news/35/jak%C3%BD-je-windows-11? (https://nekecamweb.cz/news/35/jak%C3%BD-je-windows-11?)
Název: Re:Script PHP, podobné články
Přispěvatel: robin martinez 10. 12. 2021, 10:46:41
nejde o to, jestli to funguje, ale o to, jak to funguje a jak je to napadnutelny
Název: Re:Script PHP, podobné články
Přispěvatel: Květoš 10. 12. 2021, 16:04:35
Kód shora jsem zjednodušil (openside):
Kód: [Vybrat]
//Kvetos, 10.12.2021 - blog.tpl.php ve footer.
echo '<div class="well text-center m-t-10 m-b-0">';
openside("Politika - související články");
   $related_blog = dbquery("SELECT * FROM ".DB_BLOG."
   WHERE ".groupaccess('blog_visibility')."
   AND (blog_start='0'||blog_start<=".time().")
   AND (blog_end='0'||blog_end>=".time().")
   AND blog_draft='0'
   AND blog_cat='".stripinput($data['blog_cat'])."'
   AND blog_id !='".stripinput($_GET['readmore'])."'
   ORDER BY RAND()
   DESC LIMIT 0,6");

      //echo"<div style='margin-left:20px; margin-right:auto;' class='tbl-border'>";
   if (dbrows($related_blog)) {
   $i = 0;
      while ($related_blog_data = dbarray($related_blog)) {
      $row_color = ($i % 2 == 0 ? "tbl1" : "tbl2");
      $subject = trimlink(strip_tags(parseubb($related_blog_data['blog_subject'])), 80);
      echo "<div class='$row_color'><a href='".INFUSIONS."/blog/blog.php?readmore=".$related_blog_data['blog_id']."'>".$subject."</a><div  style='float: left; padding-right: 40px;'>".showdate("%d.%m.%Y %H:%M", $related_blog_data['blog_datestamp'])."</div>\n</div>\n";
      $i++;
      }
       }else{
      echo"<div style='text-align: center;'>Není žádný související článek Politika!</div>\n";
   }
   echo"</div></div>\n";
closeside();

Žádné útoky jsem nezaznamenal, funguje bez problémů!

https://nekecamweb.cz/blog/2818/fiala-&amp-pekarov%C3%A1-sil%C3%A1ck%C3%A1-slova-k-prezidentovi
 (https://nekecamweb.cz/blog/2818/fiala-&amp-pekarov%C3%A1-sil%C3%A1ck%C3%A1-slova-k-prezidentovi)