Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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
$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']."'>» "
.$row2['Headline']."</a>";
//End
-
Pokud opravdu chcete poradit, tak alespoň napište, jakou chybu server vyhazuje. Takhle je to jen hádanka.
-
Predpokladam, podla toho kusu scriptu, hlasi ze $samenews neexistuje...
-
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
//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']."'>» " .$row2['Z domova']."</a>";
}
//End
<?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'], 3, INFUSIONS.'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_RIGHT, iGUEST);
\PHPFusion\Panels::addPanel('news_menu_panel', display_news_categories($info), \PHPFusion\Panels::PANEL_RIGHT, iGUEST, 9);
}
}
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&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_RIGHT, iGUEST, 9);
}
}
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']."'>» " .$row2['Z domova']."</a>";
}
//End
/code]
-
odkud jste vzal ten script na konci?
-
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)
-
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?
-
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.
-
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?
-
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.
-
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.
-
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
-
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:
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");
}
-
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:
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");
}
-
Tak konečně Související články v kategirii Politika/blog se mně již zobrazují.
Zde je kód:
//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.
-
Ještě zjednodušený text (horní řádky odstraněné):
//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();
-
Další oprava, odkazy, link na článek je už funkční:
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?)
-
ten kod z mnoha duvodu nemuze fungovat
-
$rows = dbrows($result);
je snad nejaky pole z radky, takze musi fungovat neco jako
$rows = dbrows($result);
foreach($rows as $row) {
echo "<a href=....";
}
jinak tohle je kouzelny, nechapu moc ucel :D
if ($rows = 5).....
-
jinak tohle je kouzelny, nechapu moc ucel :D
if ($rows = 5).....
je tam toho vic
$random = rand(1,3);
if ($random == 4 ) {
-
je tam toho vic
$random = rand(1,3);
if ($random == 4 ) {
toho jsem si nevsiml :-X
-
Tak jsem dnes ráno ještě vylepšil kód. Odkaz již 1 link otevírá:
//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...
-
A s tímto již fungue:
<!-- 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);
-
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. ;)
-
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:
//xss
$_GET['rowstart'] = (isset($_GET['rowstart']) && isnum..............................s hodnotou : 0;
A kódu pro přihlášení pak mám:
$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í:
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");
-
Brrr to jsem se osypal jen jsem zahledl zneni dotazu. Tohle skonci hacknutim od nejakyho zdejsiho ctenare. A ne, nemuze za to PHP.
-
No, nelekej se, ještě to není na ostrém.
A co tohle, to je také mimo mísu?
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:
$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";
-
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.
-
Tady je kód celý, který funguje:
//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.
-
ano
-
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...
-
@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?)
-
nejde o to, jestli to funguje, ale o to, jak to funguje a jak je to napadnutelny
-
Kód shora jsem zjednodušil (openside):
//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-&-pekarov%C3%A1-sil%C3%A1ck%C3%A1-slova-k-prezidentovi
(https://nekecamweb.cz/blog/2818/fiala-&-pekarov%C3%A1-sil%C3%A1ck%C3%A1-slova-k-prezidentovi)