• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

leere Datensätze

jonathan09

Neues Mitglied
Hallo zusammen!

Der Betreff beschreibt meine Frage gar nicht, bis schlecht. Weiß aber nicht, wie ich diese kurz beschreiben könnte.

Folgendes:
Ich habe ein kleines Berechnungsprogramm mit PHP geschrieben. Grob beschrieben besteht dieses lediglich aus einer Seite; über ein Formular gibt der User seine Daten ein, wird zum nächsten Formular (via GET Variablen auf der selben Seite) weitergeleitet. Nach ein paar Eingaben erhält er auf der letzten Seite die Ergebnisse.

Direkt beim Aufrufen der Seite wird eine Session gestartet und mit ip, Datum ein Datensatz in einer MySQL Datenbank angelegt. Die nachfolgenden Formulareingaben werden dann jeweils beim Absenden dem nun bestehenden Datensatz hinzugefügt.

Jetzt komme ich zu den "leeren Datensätzen":
Führt ein User die Berechnung nicht komplett aus, ist der Datensatz natürlich unvollständig - schlimmstenfalls sind nur IP und Datum hinterlegt. Nun ist mir aufgefallen, dass sehr viele dieser nicht vollständigen Datensätze bestehen.
Da ich ein "Kontrollfreak" bin, möchte ich natürlich wissen, warum! Hat der User die Eingaben einfach beendet, oder liegt ein Fehler im Skript vor? VOR Erstellung des Datensatzes überprüfe ich die Akzeptanz von Cookies durch den Browser - nur wenn diese gesetzt werden können, wird der User weitergeleitet und der DS erstellt. Eigentlich müsste die Berechnung daher abschließend ausgeführt werden können - warum aber werden viele es nicht?

Gibt es eine Möglichkeit, dies zu überprüfen?

Vielen Dank!

LG
 
Werbung:
Wenn Du bei jedem Aufruf der Seite einen Datensatz speicherst, erzeugen auch alle Bots die die Seite aufrufen einen Datensatz. Die kommen dann natürlich nicht über das Formular hinweg, weshalb Du dann "leere" Datensätze hast.

Tipp: speichere diesen Datensatz erst, wenn das Formular abgeschickt wird. Nicht wenn es einfach nur aufgerufen wird.
 
Werbung:
Suchmaschinen-Bots, Spambots, …

Na ja, was heißt „es würde reichen“. Gegen Spambots kommst du damit vermutlich nicht an, da die natürlich auch Formulare abschicken.

Die Frage ist aber, was du überhaupt für ein Verhalten erreichen möchtest.
 
Ich würde dir auch vorschlagen , die Eingaben in der $_SESSION Collection zu speichern und erst am Ende in einem Rutsch in die Datenbank zu schreiben und danach einen Cleanup auf die temporären Felder in $_SESSION, damit er gegebenfalls eine neue Runde beginnen kann. So sparst dir auch beim hin-und her Navigieren des Benutzers, bereits gemachte Eingaben wieder aus der DB zu holen, der Zugriff auf $_SESSION ist viel einfacher.
 
Werbung:
Danke für eure Antworten!Habt Ihr vllt noch einen Link für mich, wo gut und einfach erklärt ist, wie ich die Daten in Sessions speichern und auslesen kann?VG
 
Das geht wie bei jeder anderen Collection
PHP:
$test = (isset($_SESSION('Test')) ? $_SESSION('Test') : '';
$_SESSION('Test') = 'NewValue';
 
Werbung:
Es wird pro Benutzer eine Session angelegt, die eine gewisse Zeit aktiv ist (einstellbar oder bis Browser zu oder bis explizit zerstört). Aber wo ist das Problem, nach Eingabe aller Daten einer Abfrage eines Benutzers kommen sie doch in die Datenbank. Die Session ist doch nur etwas temporäres für einen Datensatz eines Benutzers für den Zeitraum der Eingabe, für dauerhaft hast die DB.
 
Werbung:
Hallo zusammen,

ich hhabe mein Skript nun entsprechend umgeschrieben und die Werte vorab in Sessions gespeichert - erst beim Absenden werden diese in der DB gespeichert. Danke für die Tipps!
Nun noch eine weitere Frage:

Zur Identifikation des Users erstelle ich eine Session ID:
PHP:
session_start();
$rechner = session_id();
Hier wird auch ein Cookie gesetzt (was auch sein soll und vorab überprüft wird); diesen Cookie möchte ich aber nun über einen Link löschen. So kann der User nach Abschluss die Sitzung beenden und evtl. weitere Daten erfassen. Dies funktioniert aber leider nicht mit:
PHP:
if(isset($_GET['logout'])) {
  setcookie("PHPSESSID", "", time() - 3600);
  session_unset();
  session_destroy();
    header("Location:blabla");
}

Was muss ich tun, damit alle Daten gelöscht werden und der User eine neue ID erhält?

Danke Euch!

VG
 
Zurück
Oben