Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Illegal string offset - Warning in reviews.

    kaisa

    • Schreiberling
    • Beiträge: 365
    Illegal string offset - Warning in reviews.
    am: 29. Dezember 2014, 00:18:28
    Illegal string offset 'reviews_id' in in /templates/MEIN TEMPLATE/source/boxes/reviews.php on line 73

    Zeile ist identisch auch im xtc5-Template enthalten:

    Code: PHP  [Auswählen]
      $cache_id = $_SESSION['language'].$random_product['reviews_id'].$product->data['products_id'].$_SESSION['language'];

    Was ist da falsch?

    Linkback: https://www.modified-shop.org/forum/index.php?topic=31861.0
    Marktplatz - Eine große Auswahl an neuen und hilfreichen Modulen sowie modernen Templates für die modified eCommerce Shopsoftware

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.343
    • Geschlecht:
    Re: Illegal string offset - Warning in reviews.
    Antwort #1 am: 29. Dezember 2014, 11:04:20
    Geh mal bitte die drei Seiten des folgenden Themas durch: Admin-Login und PHP 5.4

    Oder du ersetzt die Zeile 73 mal testweise mit folgender:

    Code: PHP  [Auswählen]
      $cache_id = $_SESSION['language'].(isset($random_product['reviews_id']) ? $random_product['reviews_id'] : '0').(isset($product->data['products_id']) ? $product->data['products_id'] : '0').$_SESSION['language'];

    Grüße

    Torsten

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.891
    • Geschlecht:
    Re: Illegal string offset - Warning in reviews.
    Antwort #2 am: 29. Dezember 2014, 11:41:07
    ...bzw. einfacher so, wie in dem zitierten Thread von mir beschrieben:
    Code: PHP  [Auswählen]
    if($random_product) {
        $cache_id = $_SESSION['language'].$random_product['reviews_id'].$product->data['products_id'].$_SESSION['language'];
    }

    Gruß,
    noRiddle

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Illegal string offset - Warning in reviews.
    Antwort #3 am: 29. Dezember 2014, 13:00:44
    Also wegen folgender 'elseif' Anweisung in '/templates/xtc5/source/boxes/reviews.php' ab Zeile 51

    Code: PHP  [Auswählen]
    } elseif ($product->isProduct()) {
       
        // Verhindern das Gäste oder Spamer bewerten können. www.aranowa.de
        if (isset($_SESSION['customer_id'])) {

       // display 'write a review' box
       $box_content = '<table border="0" cellspacing="0" cellpadding="2"><tr><td align="left" class="infoBoxContents"><a href="' . xtc_href_link(FILENAME_PRODUCT_REVIEWS_WRITE, xtc_product_link($product->data['products_id'],$product->data['products_name'])) . '">' . BOX_REVIEWS_WRITE_REVIEW .'</a></td></tr></table>';
        }
      }

    empfehle ich Tomcraft's Vorschlag aus Beitrag #1 und nicht noRiddle's Vorschlag aus Beitrag #2, denn bei diesem Vorschlag wird meiner Meinung nach keine bzw. eine falsche '$cache_id' (z.B. eine aus einer anderen vorrangig eingebundenen Box) in '/templates/xtc5/source/boxes/reviews.php' Zeile 74 eingefügt.

    PS:
    Habe obige Ausführungen allerdings nicht explizit getestet.

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.891
    • Geschlecht:
    Re: Illegal string offset - Warning in reviews.
    Antwort #4 am: 29. Dezember 2014, 13:28:37
    Hmm, klingt plausibel was "keine $cache_id" betrifft, das darf natürlich nicht sein, danke dir also für die Korrektur.
    Daß jedoch eine falsche $cache_id gesetzt werden könnte kann ich theoretisch nicht nachvollziehen, kannst du das begründen ?

    Dabei fällt mir übrigens noch etwas anderes auf:
    Das hier
    Code: PHP  [Auswählen]
    // Verhindern das Gäste oder Spamer bewerten können. www.aranowa.de
    if (isset($_SESSION['customer_id'])) {
        CODE
    }
    ist nicht korrekt da ich im Backend einstellen kann ob die Kundengruppe "Guest" bewerten darf.
    Das wird mit obigem Code ausgehebelt.
    Es sollte dort statt nach
    Code: PHP  [Auswählen]
    if (isset($_SESSION['customer_id'])) {
    nach
    Code: PHP  [Auswählen]
    if ($_SESSION['customers_status']['customers_status_write_reviews'] == '1') {
    gefragt werden.

    Das Bewertungsmodul hat ohnehin einige Schwächen, das ist ja bekannt, trotzdem sollte man vielleicht die kleinen auffälligen Ungereimtheiten fixen.

    Gruß,
    noRiddle

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Illegal string offset - Warning in reviews.
    Antwort #5 am: 29. Dezember 2014, 14:05:57
    Hallo noRiddle
    [...]
    Daß jedoch eine falsche $cache_id gesetzt werden könnte kann ich theoretisch nicht nachvollziehen, kannst du das begründen ?
    [...]
    Andere Boxen weisen der Variablen '$cache_id' auch Werte zu und diese Werte bleiben erhalten bis sie überschrieben werden, das bedeutet das '$cache_id' beim Aufruf der Datei '/templates/xtc5/source/boxes/reviews.php' mit grosser Wahrscheinlichkeit bereits einen Wert aus einer anderen zuvor eingebundenen Box hat und dieser dann in '/templates/xtc5/source/boxes/reviews.php' Zeile 74 übergeben wird, das meinte ich mit falscher '$cache_id' einfügen.

    Gruss
    Hanspeter

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.891
    • Geschlecht:
    Re: Illegal string offset - Warning in reviews.
    Antwort #6 am: 29. Dezember 2014, 16:39:09
    Ah, okay, verstehe,
    ...wobei, bist du sicher, daß die einmal in irgendeiner Box gesetzte $cache_id global zur Verfügung steht ?
    Ist aber auch egal, Tomcrafts Ansatz ist korrekt, meiner nicht.

    Gruß,
    noRiddle

    kaisa

    • Schreiberling
    • Beiträge: 365
    Re: Illegal string offset - Warning in reviews.
    Antwort #7 am: 30. Dezember 2014, 13:29:50
    Danke Tom, ich hätte es beim besten Willen nicht mit php5.4 oder Admin-Login in Verbindung gebracht. Komisch, dass der Thread bei der Suche nicht aufgetaucht oder mir aufgefallen ist. Ich habe den Eindruck, die Suche sucht nur im dem Forumsbereich, in dem man sich gerade aufhält.

    Und man darf ja nicht zu schnell seine Suchbegriffe ändern (5 sek. Limit).
               
    anything