Author Topic: Topics RSS - Section_ID als Array einbinden?  (Read 649 times)

Offline Hollol

  • Posts: 204
Topics RSS - Section_ID als Array einbinden?
« on: January 31, 2017, 11:56:40 AM »
Hallo Leute,

nachdem ich im Modul "Topics" die rss.php durch folgende Code-Änderungen zum Laufen gebracht habe:

Zeile 101:
Code: [Select]
while (false !== ($topic = $query->fetchRow())) {geändert in:
Code: [Select]
while ($topic = $query->fetchRow()) {
Zeile 175:
Code: [Select]
while (false !== ($old = $past->fetchRow(MYSQL_ASSOC))) {geändert in:
Code: [Select]
  while ($old = $past->fetchRow(MYSQL_ASSOC)) {
Zeile 180:
Code: [Select]
if (false ===($statistic = $result->fetchRow(MYSQL_ASSOC)))geändert in:
Code: [Select]
if ($statistic = $result->fetchRow(MYSQL_ASSOC))
hätte ich noch die Frage, ob man die $section_id auch als ARRAY "sicher" an das Script weitergeben und auslesen kann, ohne sämtliche Scheunentore in der Datenbank zu öffnen?!

Link mit (geplanter) Abfrage:
Quote
http: //www.mypage.net/modules/topics/rss.php?section_id=4,8,12,113

Eine Zahl kann ich bei der GET Abfrage mit is_numeric prüfen und absichern. Reicht hier ein is_array aus?

Ich hatte mir das ungefähr so vorgestellt:
Quote
if (isset($_GET['section_id']) && is_array($_GET['section_id'])) {
$section_id = $_GET['section_id'];

SQL-Abfrage dann:
Quote
$SQL = sprintf("SELECT * FROM `%smod_topics` WHERE `section_id`IN($section_id) AND `active`>'3'%s ".

Oder habe ich hier einen Denkfehler drin, der mich an Sicherheit kostet? Leider reichen meine Kenntnisse diesbezüglich (noch) nicht aus, so dass ich lieber nachfrage.

Eine Abfrage, wenn nur eine einzige SECTION_ID angegeben ist, müsste sich leicht einbauen lassen.

Der Grund für das ARRAY ist der, dass ich auf verschiedenen Seiten jeweils das Topics-Modul in einer eigenen Section eingebunden habe, aber diese speziellen Sections in einem RSS-Feed darstellen will (nicht nur eine Section).
Evtl. auch als Auswahl für die Besucher, welche Rubriken sie abonnieren möchten.

Danke schonmal für Anregungen.

Hollol

Offline Hollol

  • Posts: 204
Re: Topics RSS - Section_ID als Array einbinden?
« Reply #1 on: January 31, 2017, 12:59:18 PM »
Denkfehler bemerkt:

"?section_id=4,8,12,113" ist kein Array. Somit greift is_array nicht.
Eher so: "?section_id=array(4,8,12,113)", oder?


Offline jacobi22

  • Posts: 5685
  • Gender: Male
  • Support also via PM or EMail
    • Jacobi22
Re: Topics RSS - Section_ID als Array einbinden?
« Reply #2 on: January 31, 2017, 02:00:52 PM »
hier sollte das Script eigentlich ein Fehler werfen -> MYSQL_ASSOC
use MSQLI_ASSOC

grundsätzlich läßt sich wohl nur prüfen, ob die ID's auch Zahlenwerte sind, z.b. mit intval() vor der Verarbeitung
Prüfe aber auch, ob du damit nicht auch Sectionen erreichen kannst, die nicht beabsichtigt sind
Probleme sind da, um sie zu lösen, nicht, um nach Ausreden zu suchen.

Offline Hollol

  • Posts: 204
Re: Topics RSS - Section_ID als Array einbinden?
« Reply #3 on: January 31, 2017, 03:29:14 PM »
Ich kann keine Fehlermeldung erkennen. Auch in der var/logs/php_error.log wird kein Fehler ausgegeben.

Nur das hier hatte Fehler verursacht: ...false !== (...

Okay, intval ist schon mal ein Hinweis.

Stimmt. Wenn jemand im Link sämtliche Zahlen durchtestet, landet er auch auf verstecken Sections.
Das heisst, alle Sections außer der vorgebenen ausschließen.
Daran hatte ich noch nicht gedacht.

Danke.





Offline jacobi22

  • Posts: 5685
  • Gender: Male
  • Support also via PM or EMail
    • Jacobi22
Re: Topics RSS - Section_ID als Array einbinden?
« Reply #4 on: January 31, 2017, 05:47:14 PM »
Quote
Stimmt. Wenn jemand im Link sämtliche Zahlen durchtestet, landet er auch auf verstecken Sections.
Das heisst, alle Sections außer der vorgebenen ausschließen.
Daran hatte ich noch nicht gedacht.

wenn ich mich recht entsinne, sollte auf einer Topics-Seite die TOPIC-ID gesetzt sein
alternativ und wohl sicherer: die in Frage kommenden Sections mit type=topics aus der DB auslesen und daraus ein Array bilden, den man dann abgleichen kann, wenn erforderlich
Probleme sind da, um sie zu lösen, nicht, um nach Ausreden zu suchen.

Offline Hollol

  • Posts: 204
Re: Topics RSS - Section_ID als Array einbinden?
« Reply #5 on: February 01, 2017, 11:05:18 AM »
Alles klar. Danke!

Allerdings geht mir das jetzt schon zu sehr in die Tiefe. Da reichen meine Kenntnisse im Coden noch nicht aus. Das überlasse ich dann doch lieber Profis, bevor ich irgendwas zusammenmurkse und mich weiter blamiere.
Wie oben mit dem Denkfehler, der keiner war  :roll:

Die Abfrage mit Array funktioniert jetzt zwar (noch ohne Überprüfungen), aber es hat mich Stunden gekostet, dass der Code so lautet:

Quote
$SQL = sprintf("SELECT * FROM `%smod_topics` WHERE `section_id` IN (%s) AND `active`>'3'%s ".

und nicht etwa
Quote
$SQL = sprintf("SELECT * FROM `%smod_topics` WHERE `section_id` IN ($section_id) AND `active`>'3'%s ".
oder
Quote
$SQL = sprintf("SELECT * FROM `%smod_topics` WHERE `section_id` IN (".$section_id.") AND `active`>'3'%s ".

Dadurch sollten im weiteren Verlauf des Scripts allerdings noch weitere Parameter angepasst werden. Als Titel z.B. wird der aus dem ersten Array genommen und die anderen bleiben unberücksichtigt.

Von daher stelle ich das RSS-Projekt vorerst mal zurück und studiere die Coder-Thematik nochmal intensiver.
Das Script kann ich ja als Lernbeispiel nehmen und meld mich nochmal dazu, wenn ich vorweisbare Ergebnisse habe.

Danke für die Hinweise und Anregungen bisher.

Offline jacobi22

  • Posts: 5685
  • Gender: Male
  • Support also via PM or EMail
    • Jacobi22
Re: Topics RSS - Section_ID als Array einbinden?
« Reply #6 on: February 01, 2017, 12:04:50 PM »
Alles, was du brauchst, bringt WB schon mit. Suche dir Vorgänge, die eine ähnliche Funktion bieten. news/rss.php und die Dateien im framework-Ordner sind schon die halbe Miete und da wärst du auch code-technisch auf aktuellem Stand. Erfordert natürlich eine gewisse Einarbeitung.
Probleme sind da, um sie zu lösen, nicht, um nach Ausreden zu suchen.

Offline Hollol

  • Posts: 204
Re: Topics RSS - Section_ID als Array einbinden?
« Reply #7 on: February 01, 2017, 12:27:07 PM »
Quote from: jacobi22
Alles, was du brauchst, bringt WB schon mit...

So ähnlich hatte ich mir das gedacht. Lernen am praktischen Beispiel.
Außerdem schlage ich damit 2 Fliegen mit einer Klappe. Die Code-Technik und WB selber besser im Inneren verstehen.

Aber wie Du schon sagst: braucht halt seine Zeit.

 

postern-length