Gast wird nach Bestellung zu Admin

  • Hallo,
    habe ein kleines Problem.
    Wenn ich als Gast bestelle, wird der Kunde zum Admin:
    [customers_status_id] => [customers_status_name] => Admin [customers_status_image] => admin_status.png

    Das Problem liegt vermutlich darin, dass das Gastkonto gelöscht wird und keine id mehr vorliegt.
    In der "write_customers_satus.php" erzeugt folgende Zeile:
    $customers_status_query_1 = xtc_db_query("SELECT customers_status FROM " . TABLE_CUSTOMERS . " WHERE customers_id = '" . (int)$_SESSION['customer_id'] . "'");
    also immer eine 0 (also Admin), wenn versucht wird eine customers_id abzufragen, die nach einer Gastbestellung nicht mehr existiert.

    Wird hierfür ein Fix geboten?
    Ansonsten würde ich eine Abfrage hinzufügen - weiß nur nicht wo das noch überall eine Rolle spielen könnte.

    Beste Grüße, Alex

  • Bei mir taucht es jedoch so auf - im originalen shop (nichts entwickelt) - die Funktion scheint das aber auch so herzugeben dass genau dieser Effekt auftritt (wenn ich mich nicht Irre) :)

  • Hmm war vorher auch mall ins forum so ähnliches, kan es nicht finden dachte es war durch Admin gesehen und behoben.

    Weis nicht ob biketeile es hätte oder earlh.

  • Zitat

    Wenn ich als Gast bestelle, wird der Kunde zum Admin:
    [customers_status_id] => [customers_status_name] => Admin [customers_status_image] => admin_status.png

    Wie hast du das debuggt?

    Zitat

    $customers_status_query_1 = xtc_db_query("SELECT customers_status FROM " . TABLE_CUSTOMERS . " WHERE customers_id = '" . (int)$_SESSION['customer_id'] . "'");
    also immer eine 0 (also Admin), wenn versucht wird eine customers_id abzufragen, die nach einer Gastbestellung nicht mehr existiert.

    Nach dem Löschen des Gastkontos wird die Session zurückgesetzt. Somit hat $_SESSION['customer_id'] keinen Wert (null), was in write_customers_satus.php (eine Zeile davor) abgefragt wird. Worauf basieren deine Vermutungen?

    Es gibt jedoch viel leichtere Wege den Gast zum Admin zu machen: etwa falsche Einstellungen im Adminbereich oder Datenbank-Manipulationen.

  • Also das mit dem löschen des Gastkontos habe ich schon behoben... da wurde auch der Adminbutton angezeigt.
    Aber ich rede darüber was vor dem löschen des Gastkontos passiert.

    Sessionvariablen habe ich mir über print_r($_SESSION); anzeigen lassen.
    Wie du siehst, ist die customers_status_id bei mir noch gesetzt, hat jedoch keinen Wert, daher ist isset($_SESSION['customers_status']) wahr und das Script verläuft bei gesetzter Variable immer in den "Admin-Zweig".
    Ich sehe im reinen Bestellprozess keinen Punkt, der die customers_status entfernt (unset).

    Wenn diese immer vorhanden ist, der User aber nicht mehr in der Datenbank, läuft das Script doch immer in den Zweig für den Admin (if (isset($_SESSION['customers_status'])) {)
    und $customers_status_query_1 = xtc_db_query("SELECT customers_status FROM " . TABLE_CUSTOMERS . " WHERE customers_id = '" . (int)$_SESSION['customer_id'] . "'"); wird dann immer 0 zurückliefern.

    Mal zum Testen:
    Mach mal eine Gastbestellung und gib in der "write_customers_status.php" in folgender Zeile:
    $customers_status_query_1 = xtc_db_query("SELECT customers_status FROM " . TABLE_CUSTOMERS . " WHERE customers_id = '" . (int)$_SESSION['customer_id'] . "'");
    anstatt " . (int)$_SESSION['customer_id'] . " eine Zahl ein die in der Datenbank nicht als User-ID vorhanden ist.

    Das führt bei mir zu folgendem Ergebnis: $_SESSION['customers_status']['customers_status_name'] = "Admin".

    Ich habe in der write_customers_status.php jetzt einfach eine kleine Abfrage hinzugefügt, die erstmal prüft, ob der Nutzer überhaupt existiert.

  • Zitat

    Wie du siehst, ist die customers_status_id bei mir noch gesetzt, hat jedoch keinen Wert, daher ist isset($_SESSION['customers_status']) wahr und das Script verläuft bei gesetzter Variable immer in den "Admin-Zweig

    Bitte Dateiname und Zeilennummer angeben, sonst ist es unklar worüber du redest.

    Zitat

    Mach mal eine Gastbestellung und gib in der "write_customers_status.php" in folgender Zeile:

    Ja. Luke gibt es. Aber es tritt fast nie auf. Nach dem Erstellen des Gastkontos hat $_SESSION['customer_id'] die Id des gerade angelegten Kontos.
    Wenn nach dem Erstellen des Kontos dies manuell (oder durch selbstgemachten Skript) aus der Datenbank entfernt würde und der Client noch gültige Session hätte, könnte das passieren. Oder vielleicht wenn das Anlegen des Kontos fehlschlägt (habe es nicht geprüft). Auf jedem Fall ermöglicht diese Luke die Anzeige der Admin-Box, reicht jedoch nicht aus, die Admin-Bereich zu betreten und Admin-Funktionen auszuführen.

  • Richtig... in den Adminbereich kommt man deswegen noch nicht - nur kann man mit $_SESSION['customers_status']['customers_status'] im Sinne einer Entwicklung nicht arbeiten.

    Zitat

    Bitte Dateiname und Zeilennummer angeben, sonst ist es unklar worüber du redest.


    Das bezog sich auf den ersten Post (Auszug meiner Sessionvariablen nach einer Gastbestellung(:
    [customers_status_id] => [customers_status_name] => Admin [customers_status_image] => admin_status.png

    Zitat

    Aber es tritt fast nie auf


    Es tritt immer bei einer Gastbestellung auf - der Gast wird nach Bestellung gelöscht, jedoch Abgefragt - Ergebnis ist dann der Admin.

    Also der Code gibt das so her... kann natürlich auch gut sein, dass ich etwas übersehe - so lange arbeite ich nicht mit dem Shop.

    Du kannst auch mal an das Ende der "write_customers_status.php" folgende Zeile hängen:
    echo $_SESSION['customers_status']['customers_status_name'];

    Dann bestellst du mal als Gast und nach der Bestellung gehst du mal auf eine beliebige Seite in deinem Shop (aber das Konto nicht über die Kontoeinstellungen löschen).
    Da steht bei mir ganz oben am Seitenanfang immer "Admin". Bei dir?

    3 Mal editiert, zuletzt von Alex2a (3. Mai 2014 um 15:22)

  • Welche einstellung in SHOPADMIN für den Gastkunde Bestellungen.
    Es gibt die von loeschen nach oder nicht loeschen.

    Also welche settings geben so etwas her?

    Beide?
    Oder etwas mit sessions / cookies ändern gibt dass etwas unterschiedliches.

    Bin kein programmierer aber wen man da dran ist dan besser gleich al dieser settings / möglichkeiten in Shopadmin auch mit testen, sodass man es für jeden Konfig einstellung tested und wen möglich beheben könte. ;)

  • Also der Gast wird gelöscht - ist so im Admin eingestellt, ansonsten alles Standard / mit Sessions.

    Habe es am Originalshop versucht - dort habe ich an den Sessions nichts geändert.