Antworten auf deine Fragen:
Neues Thema erstellen

Session Var. in DB abspeichern geht nicht??

Kumaro

Nicht mehr ganz neu hier

Hi ich habe ein kleines Problem und um ehrlich zu sein habe ich keine ahnung was das Problem ist :(
Ich habe ein Formular wo ich die Eingaben in mehreren session variabeln abspeichere und dann auf der letzten seite wenn man auf FERTIg klickt wird eine auswertungsdatei aufgerufen die die Datenbank verbindung aufruft und nun die Daten in den Session Var. in die DB schreiben soll... doch es funktioniert nicht... es muss irgendwie an dem session array liegen kann das sein?

Wenn ich zum Beispiel das ausführen will:

/* DB login */
$query = "INSERT INTO Events (ID) VALUES ('$_SESSION['event_id']')";
$sql = mysql_query($query);
mysql_close($dz);

bekomme ich folgende fehlermeldung die sich auf diese Zeile bezieht:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\ga-town.de\event_eintragen_final_auswertung.php on line 159

Nur der Befehl ist doch richtig?!
Ich hoffe ihr könnt mir sagen was ich übersehe?!
 

T

ThalAMorgul

Guest

AW: Session Var. in DB abspeichern geht nicht??

versuch es mal so
$query = "INSERT INTO Events ( ID ) VALUES ( '".$_SESSION['event_id']."' )";
$sql = mysql_query( $query );
mysql_close( $dz );

je nach dem, wie der wert definiert wird, bzw welche werte er annehmen kann, ist noch ein addslashes() oder aehnliche escapes zu empfehlen, damit kein syntaxfehler auftritt.

Dein Problem war btw nur, dass die variable nicht von PHP erkannt wird, wenn Du sie in einfache Anfuehrungszeichen setzt - dies
funktioniert nur bei doppelten. Weiterfuehrende Erklaerungen dazu findest Du ueber google sicherlich ganz leicht (=
 
Zuletzt bearbeitet von einem Moderator:

Kumaro

Nicht mehr ganz neu hier

AW: Session Var. in DB abspeichern geht nicht??

hi danke ich hab das problem gefunden bei dem array wert muss man die ' weglassen dann gehts :)
 
T

ThalAMorgul

Guest

AW: Session Var. in DB abspeichern geht nicht??

Wo hast du die einfachen Anfuehrungszeichen weggelassen?
Beim alphanumerischen Indices brauchst Du sie, ebenfalls ist es syntaktisch "richtiger",
entsprechende Anfuehrungszeichen in deinem Query zu setzen, sofern der Spaltentyp
keine Zahl ist. Wenn also die Spalte "ID" bei dir einen String speichert, solltest Du
'".$_SESSION['event_id']."' verwenden, da der Wert dann im Query als String formatiert ist (was sich dann mit dem Typ deckt.)

Sollte die Spalte jedoch nur Zahlwerte (INT) speichern, kannst Du die einfachen Anfuehrungszeichen weglassen (was auch "richtiger" ist).

So oder so solltest Du sicherheitshalber Werte, die Du in deine Datenbank schreibst, auf Sonderzeichen und darin enthaltene Anfuehrungszeichen pruefen und diese ggf. escapen, um nicht einer injection oder anderen Angriffen zum Opfer zu fallen.

Funktionen dazu liefert Dir PHP: mysql_escape_string().
 

stroyer

Aktives Mitglied

AW: Session Var. in DB abspeichern geht nicht??

Oder da die ID normalerweise eh nur ein INT ist einfach ".($_SESSION['event_id']*1)." verwenden (außen doppelte, innen einfache Anführungszeichen). Das eleminiert dann alles, was keine Zahl ist. Weil mit mysql_escape_string() bleiben Buchstaben und so vorhanden, welche einen für den User unschönen Syntaxerror auslösen und ggf. immer noch nicht vor einer Injektion schützen (Beispiel $_SESSION['event_id']='1 ); DROP TABLE Events;' Durch mysql_escape_string() ändert sich nichts und da aus Richtigkeitsgründen in der Abfrage keine Anführungszeichen sind, resultiert das in INSERT INTO Events ( ID ) VALUES ( 1 ); DROP TABLE Events; Den Effekt werde ich wohl nicht explizit anführen müssen ;)
 
T

ThalAMorgul

Guest

AW: Session Var. in DB abspeichern geht nicht??

Um explizit auf eine Zahl zu matchen, kannst Du auch einfach den Wert mit Hilfe einer Regex von allen unerwuenschten Zeichen saeubern.

Aber das haengt wie gesagt davon ab, welchen Typ Deine Spalte hat und welche Wert Du speichern moechtest.
 

stroyer

Aktives Mitglied

AW: Session Var. in DB abspeichern geht nicht??

Mit 1 Multiplizieren kommt aber aufs gleiche raus und ist meiner Meinung nach um vieles schneller/leichter, als alle anderen Zeichen zu filtern.
Und Id ist so gut wie immer vom Typ Int.
 
T

ThalAMorgul

Guest

AW: Session Var. in DB abspeichern geht nicht??

Naja, der Name der Spalte sagt ja noch nix ueber ihren Typ aus (auch wenn stark davon auszugehen ist, dass es sich hierbei um einen Zahltyp handelt. Doch darueber koennen wir wohl ohne naehere Informationen durch den TE ewig diskutieren ^^).

Wenn "event_id" aber auch buchstaben enthalten soll / kann, ist eine Ueberpruefung durch eine Regex unumgaenglich.

Waere also nett, wenn sich der TE mal aeussern koennte, ob das Problem weiterhin besteht oder sich nun loesen liess.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben