kostenloser Webspace werbefrei: lima-city


Shopsystem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Hallo,

    gibt es eine Möglichkeit, mit "CREATE TABLE" die IP-Adresse des Users als Tabellenname zu nehmen? Ich hab schon einiges versucht, aber entweder kommt eine Fehlermeldung, weil es so nicht funktioniert oder es kommt keine Fehlermeldung, aber es passiert auch nichts - sprich, es wird keine Tabelle erstellt.

    Ich hoffe sehr, dass mir hier jemand helfen kann.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich glaub mal mysql mag keine Tabellennamen, die mit einer Zahl beginnen und Punkte drin haben ;)

    Nur nebenbei: Du hast ein schlechtes Datenbankdesign. Seh dir Joins und Subselects an, dann hast du solche Probleme nicht.
  4. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Datenbankdesign? Joins? Subselects? Schulhof? Sorry, ich bin nicht wirklich fit in Sachen Datenbanken, MySQL und Co. Ich versteh also nicht wirklich, was du mir im zweiten Satz sagen möchtest :(

    Das mit den Punkten dachte ich mir schon, dass das ein Problem werden könnte. Hm, es gibt nicht zufällig eine Möglichkeit, diese Punkte beim Eintragen zu ignorieren, oder? Dass der Name mit einem Buchstaben beginnen soll, sollte kein Problem darstellen.
  5. Zudem ändern sich IP Adressen auch bei den meisten Usern.
    Im Großteil der Fälle würdest du auf diese Weise also nicht weit kommen.

    Zum Thema Punkte: Die PHP-Methode preg_replace sollte helfen. Aber wie gesagt, ich würde es eh nicht so lösen.

    Gruß
    Tim
  6. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Das Problem ist nur, dass ich bisher mit Session-IDs nie klargekommen bin. Erstellen ging da immer noch gerade so, aber sobald es darum ging, die ID mit auf eine andere Seite zu nehmen, ging sie mir verloren. Daher dachte ich, dass ich das mithilfe der IP lösen kann, die ja immer gleich bleibt, solange jemand auf der Webseite ist. Natürlich ändert sich die IP immer wieder, aber nicht innerhalb weniger Minuten, Stunden etc., sondern doch eher nur einmal pro Tag, oder?

    Und was ist preg-replace?
  7. e********l

    Die Session wird in aller Regel automatisch übertragen und notfalls hängst du sie selbst an die URL an.

    Die IP ändert sich so oft wie sich der Benutzer mit seinem Modem neu einwählt und du solltest weiterhin die Tabellen nicht mit IP-Adressen Namen versehen.

    Du musst natürlich auf jeder Seite "session_start()" aufrufen.
  8. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Hm, ich hab das mal mithilfe von einem Buch, das einem Schritt für Schritt erklärt, wie das mit den Sessions funktioniert, probiert. Aber wie gesagt, die ID kam nie mit bzw. auf die nächste Seite schon, aber danach nicht mehr. Weil ich nie wusste (und das im Buch leider auch nicht beschrieben stand) wie ich die ID auf die dritte Seite bringe. Aber ich kann es ja noch einmal versuchen. Allerdings bezweifle ich, dass ich es diesmal schaffen werde. Aus lauter Frust habe ich mir dann diese "einfache" Idee mit der IP-Adresse einfallen lassen, weil man die ja auf jeder Seite wieder abrufen kann und somit ganz einfach dem jeweiligen User zuordnen kann. Tja, war wohl doch kein so guter Einfall wie ich dachte :(.
  9. Sessions sind eigentlich sehr einfach. Eine Session ist praktisch eine Sitzung. Du musst also in jeder Datei, die aufgerufen wird als allererstes im Quellcode den Befehl session_start(); stehen haben, somit wird automatisch eine Session erzeugt oder eine vorhandene weiterverwendet. Wenn nun ein User eine andere Seite aufruft, dann muss auch dort wieder im Quellcode ganz oben dieser Befehl stehen.

    Versuch dich doch mal dran und poste bei Problemen einfach den Code. So kann man dir hier sicher schneller helfen.

    EDIT: Ein weiterer Schwachpunkt bei der IP-Idee ist, dass ja in einer großen Firma, in einem Internetcafe mehrere Leute mit der gleichen IP surfen könnten.

    Beitrag zuletzt geändert: 13.10.2009 15:29:07 von karpfen
  10. Hoi, ein Tipp mit Sessions: Es gibt keine ID!
    Es gibt eine Session ID, ja, aber die hat dich normalerweise absolut gar nichts zu interessieren.

    Du schreibst einfach zu Beginn jedes Scriptes, in welchem du die Session nutzen willst ein session_start(). Dabei wird nicht eine neue Session gestartet, sondern die alte genutzt. Dann speicherst du Daten in der $_SESSION-Variable oder liest sie anschließend aus ;)
  11. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Jetzt habe ich meine sämtlichen Bücher durchforstet und Google stundenlang gequält, aber ich finde das Scripte nicht mehr, womit ich eine Session-Tabelle (und meiner Meinung nach war das die Session-ID, die Tabelle als Namen hatte - ich kann mich auch irren, ist schon ein Weilchen her) erstellt habe. Das heißt, ich bin immer noch am Ausgangspunkt: Datenbank ohne Tabelle, Scripte, die nichts bewirken und ich dreh schon langsam am Rad und halte mich selbst für völlig fehl am Platz :(. Dabei möchte ich meinen kleinen Shop doch endlich mal ein wenig besser programmieren, damit es schöner aussieht etc. pp.

    Gibt es vielleicht irgendwo ein Tutorial (bei lima-city nicht, da hab ich schon gesucht), wo steht, wie ich eine Session-Tabelle erstelle. Denn ich glaube, wenn ich das habe, ist das schon die halbe Miete. Ich hatte es mal geschafft, das weiß ich. Ich weiß jedoch auch, dass ich danach nie weiterkam. Aber es könnte schon sein, dass ich jedes Mal einfach nur vergessen habe, dieses Startzeugs auf die nächste Seite zu klatschen, weil ich davon ausging, dass wieder eine neue gestartet wird. Ich weiß es nicht mehr, kann auch an etwas anderem gelegen haben.

    Ich bräuchte jetzt quasi nur noch einen kleinen Schubs zwecks der Create-Geschichte, dann nerv ich (hoffentlich) nicht mehr :(. Und wenn doch, bin ich bestimmt wesentlich weiter als jetzt :D.
  12. e********l

    Du brauchst keine Session Tabelle. Alles was du brauchst ist wie nikic schon sagte in jedem Script das aufgerufen wird ein "session_start()"

    Da du von einem Shop sprichst, wird es hoffentlich eine globale Datei geben die für die Konfiguration notwendig ist und die immer aufgerufen wird. In selbige kannst du auch das session_start() packen.

    Oder hast du irgendeine komische PHP Konfiguration das Sessions nicht klappen?

    //edit: PHP Live Doku FTW: http://us3.php.net/manual/de/function.session-start.php

    Beitrag zuletzt geändert: 13.10.2009 18:00:28 von evil-devil
  13. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Hä? Keine Tabelle? Aber wo sollen denn dann die Bestellungen landen? Die müssen doch auch in die Tabelle. Schließlich müssen die mich ja irgendwie erreichen (denn die Mail-Funktion wird von lima-city ja leider verschluckt oder die Mails erreichen einen erst Wochen später).
  14. Du suchst nach einer Session-Tabelle!? Eine Tabelle!? $_SESSION ist ein Array! Wenn ein User die Seite aufruft, dann kennt der Server in diesem Moment nur die Session-Daten des Users, der die Seite öffnet! Die anderen Userdaten sind nicht einlesbar.

    Schreibe einfach mal eine PHP-Datei mit diesem Code:
    <?php
    session_start();
    $_SESSION['beispiel'] = 'Hallo, das ist ein Eintrag in meiner Session. Dieser Text steht im Arrayelement "beispiel".';
    ?>



    Und in eine andere Datei schreibst du:
    <?php
    session_start();
    echo $_SESSION['beispiel'];
    ?>



    Die Session wird nicht bei dem Client gespeichert, sondern auf dem Server. Dem Client wird nur ein Cookie gesendet, dessen Inhalt dem Server sagt, um welchen User es sich handelt.


    Das ist natürlich nur ein Beispiel, später schreibst du z.B.:
    <?php
    session_start();
    if(!isset($_SESSION['warenkorb'])) {
    $_SESSION['warenkorb'] = array();
    }
    
    if(!empty($_POST['artikelnummer'])) {
    $_SESSION['warenkorb'][] = $_POST['artikelnummer'];
    }
    ?>
  15. e********l

    EIne Session ist kein Warenkorb. Bestellungen sprich einen Warenkorb kannst du natürlich in der Datenbank speichern. Dafür sollte sich der Benutzer aber erstmal in deinem Shopsystem mit seinen Daten registrieren. Daraus erzeugst du einen EIntrag in der Benutzertabelle und hast somit eine eindeutige ID für ihn. Wenn er sich das nächste Mal einloggt in das Shop-System wird er die interne ID wieder haben. Die SessionID ist nur die ID die der Browser und Server zur Identifikation ihrer Verbindung nutzen können. Du bräuchtest theoretisch die PHP Session nicht einmal. Sie macht aber vieles einfacher.

    Gut, du hast nun eine Benutzer-Tabelle mit n Benutzern. Zusätzlich sollte dann noch eine Tabelle Bestellung und BestellPositionen sowie die Artikel ihre eigene Tabelle haben. Die kann man dann über SQL Statements abfragen und befüllen.

    Ich denke, du solltest dich zunächst mehr mit den Grundlagen beschäftigen, bevor du dich an ein Projekt wie einen Web-Shop wagst.

    Beitrag zuletzt geändert: 13.10.2009 18:07:58 von evil-devil
  16. evil-devil schrieb:
    Ich denke, du solltest dich zunächst mehr mit den Grundlagen beschäftigen, bevor du dich an ein Projekt wie einen Web-Shop wagst.

    Das denke ich auch.


    evil-devil schrieb:
    EIne Session ist kein Warenkorb.

    Da muss ich dir widersprechen. In einer Session können wunderbar die Daten eines Warenkorbs aufbewahrt werden. So ist eine Anmeldung des Users nicht nötig. Es gibt viele Shops, die nur über Sessions laufen, bei denen muss man sich auch überhaupt nicht registrieren, um etwas zu bestellen. Bei einigen ist das Registrieren freiwillig.


    Edit: Ich habe ja schon einen Beispielcode dafür gepostet.

    Beitrag zuletzt geändert: 13.10.2009 18:12:04 von drafed-map
  17. e********l

    Den "Session-Warenkorb" kann man wie du sagst in der Session ablegen. Ich als Shop-Betreiber interessiere mich aber auch dafür was ein potentieller Kunde einkaufen wollte und würde das erfassen wollen. Und den finalen Warenkorb muss ich eh irgendwie speichern zwecks Statistik.

    //edit: Natürlich geht das auch ohne Benutzerregistrierung.

    Beitrag zuletzt geändert: 13.10.2009 18:14:14 von evil-devil
  18. Ich würde sagen, er weis jetzt in etwa, wie es funktioniert, und soll erstmal seinen Shop "zusammen schrauben". Wenn er das hat, kann über Statistiken usw. geredet werden. Eine Datenbank ist aber trotzdem nötig, in seinem Fall sehe ich den Nutzen einer Datenbank aber nur in der Speicherung der Artikelnummern, Artikelbeschreibungen usw.

    Beitrag zuletzt geändert: 13.10.2009 18:19:18 von drafed-map
  19. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Ich werd immer verwirrter. Ich weiß 100%ig, dass ich diese Session-ID schon einmal als Tabellennamen genutzt habe, weil ich eine solche Tabelle erst heute aus der Datenbank gelöscht habe, die ich vor "unendlich langer" Zeit mal erstellt habe. Das war so eine ellenlange Kombination aus Buchstaben und Zahlen. Und ich brauche wirklich nur das, um weiterzukommen, weil alles andere weiß ich (glaub ich). Ich mache mir schließlich kein hochkompliziertes Zeugs daraus (keine Registriertung, keine Wiedererkennung beim erneuten Einkaufen etc.), sondern vereinfache das für mich, damit Dummchen (also ICH) auch damit klarkommt. Nur ich finde dieses Script einfach nicht mehr, mit dem ich das gemacht habe. Sprich: Session-ID erstellen, auslesen, eintragen. Mehr ist (für mich) erst einmal unwichtig, finde ich. Der Rest ergibt sich später von selbst. Aber genau darum wollte ich das ja eigentlich mit der IP machen. Das würde (für meine Zwecke) vieles vereinfachen, weil ich da genau weiß, wie ich vorgehen muss. Aber da das mit den Zahlen nicht klappt, geht auch der Rest nicht wirklich :(.

    Für euch scheint das vielleicht alles sehr wirr zu klingen, aber für mich ergibt es nun mal einen Sinn und da hilft es wirklich nicht, wenn ihr mir sagt: nein, so geht das nicht, das muss du so und so machen. Ihr wisst doch gar nicht, wie ich es erstellen will. Wie heißt es so schön: Viele Wege führen nach Rom. Aber um meinen zu beginnen, brauche ich diese Session-ID nun mal als Tabellenname. Daher: Bitte, bitte, keine Sprüche mehr, wie es besser ginge, sondern einfach nur ein Hinweis, wie ich die ID da hineinbekomme, denn ich weiß, dass es geht, finde nur das Script nicht mehr, sonst würde ich hier schon lange nicht mehr schreiben, sondern voranschreiten *soifz*.
  20. So, ich sage dir jetzt zuerst mal folgendes: Jetzt mag das für dich sinnvoll klingen, aber schon bald wirst du dir denken "oh man, wie konnte ich das nur so machen!? Ich hab total den Überblick verloren!". Aber wenn du es wirklich so willst:


    Speichere bei dem Login den Username in eine Session:
    <?php
    session_start();
    $_SESSION['username'] = $_POST['username'];
    dann erstellst du die Tabelle mit dem Titel "userdata_" und dann die Session-Variable einfügen. Später kannst du dann per $_SESSION['username'] den vollständigen Tabellennamen herstellen, und so die Daten auslesen.


    Das zu tun ist absolut nicht ratsam! Ich schlage dir soetwas nur vor, damit du selbst erfährst dass es vollkommen sinnlos ist, soetwas zu tun!

    Beitrag zuletzt geändert: 13.10.2009 19:10:35 von drafed-map
  21. Autor dieses Themas

    cam

    cam hat kostenlosen Webspace.

    Tja, wie Sie sehen, sehen Sie nichts. So hat das anscheinend auch nicht geklappt. Liegt das vielleicht am "Usernamen", den ich in "ip" umgewandelt habe? Denn es gibt schließlich keinen Usernamen. Und die Tabelle soll ja die ID sein, und nicht "userdata_" heißen. Wäre ja nutzlos!

    Hier mal der Code, den ich erstellt habe und der nichts bringt. Vielleicht weiß dann jemand weiter, wenn man es vor Augen hat, was ich machen möchte :(.

    session_start();
      $_SESSION['id'] = $_POST['id'];
      $_SERVER['REMOTE_ADDR'] = $_POST['ip'];
      $db=mysql_connect("hoste","user","passwort");
      mysql_select_db("datenbank");
      $anfrage="CREATE TABLE id VALUES(id VARCHAR(50),ip VARCHAR (20),zeit TIMESTAMP)";
      mysql_query($anfrage);
      mysql_close($db);
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!