 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
19.04.2008, 15:02
|
#1
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
Sessionstart PHP
Hallo,
wer kann mir sagen, weshalb dieser Sessionstart fehlerhaft ist? Bei der Weitergabe der Daten mittels Session funkt die letzte Zeile aus der externen Datei, immer rein.
Generelle Frage. Ist im unten stehenden Codeschnipsel die Syntax falsch oder ist diese im Ganzen "richtig"?
Codeschnipsel:
Code:
<?php
session_start( );
$id = $_GET['id'];
if (isset($_SESSION[$id])){
$_SESSION[$id]++;
} else {
$_SESSION[$id]=1;
}
?>
Danke für jegliche Hilfe!
|
|
|
19.04.2008, 16:26
|
#2
|
|
TP-Insider
Registriert seit: Nov 2006
Ort: Lübeck
|
Moin,
die Syntax ist richtig (gaebe ja sonst auch einen Fehler).
Der Schnipsel funktioniert auch soweit.
Welche Probleme gibt es denn?
Vielleicht ist das eine Loesung:
$id = '_'.$_GET['id'];
|
|
|
19.04.2008, 16:39
|
#3
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
Hallo Guin,
Was bedeutet dieses '_' in Deinem Codebeispiel? In meinem Kontroll-Konstrukt print_r() erscheint mir immer folgendes:
Array
(
[] => 14
[_] => 2
[_5344256377] => 1
)
Beachte nur die []=>14! Dieser "leere" Teil funkt mir da immer dazwischen und ich bin mir nicht sicher, ob dies mit meiner Syntax beim Sessionstart im Zusammenhang steht oder nicht? Übrigens in der Klammer sollte die Artikelnummer stehen und die "14" ist die Anzahl Artikel.
|
|
|
19.04.2008, 17:09
|
#4
|
|
TP-Insider
Registriert seit: Nov 2006
Ort: Lübeck
|
Ach so
Das kommt daher, dass $_GET['id'] auch mal leer ist.
PHP-Code:
$id = intval($_GET['id']); // wenn nur integer gebraucht werden, ist das besser so
if(!empty($id)){
if (isset($_SESSION[$id])){
$_SESSION[$id]++;
} else {
$_SESSION[$id]=1;
}
}
|
|
|
19.04.2008, 20:19
|
#5
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
Danke Guin! Werde es mal so ausprobieren und schauen, ob's nun klappt!!! 
|
|
|
22.04.2008, 16:23
|
#6
|
|
TP-Veteran
Registriert seit: Mar 2005
Ort: Weyhe
|
Ich verstehe davon ehrlich gesagt kein Wort. 
Meinst Du sowas?
Code:
$id = intval($_GET['id']);
if($id>0))
{
if (isset($_SESSION['id'])){
$_SESSION['id']++;
} else {
$_SESSION['id']=1;
}
}
Wenn Du eine Variable in einer Session ablegst, dann musst Du sie auch über ihren Namen refrenzieren. in Deinem Beispiel refrenzierst Du einen nicht existierenden Index ($_SESSION[14]).
|
|
|
22.04.2008, 17:05
|
#7
|
|
TP-Insider
Registriert seit: Nov 2006
Ort: Lübeck
|
Wenn der Index noch nicht existiert, wird er angelegt.
Es sollen ja verschiedene Artikel(nummern) als Index dienen; der Wert gibt die Anzahl an.
|
|
|
22.04.2008, 23:29
|
#8
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
Könnte es sein, dass wenn z.B. alle Artikelnummern alphanumerisch (4r54r33w) sind, übertragen werden und Artikelnummern, die nur numerisch (576332) sind, nicht weitergeleitet werden? Müsste man da etwas bei nachstehendem Codeschnipsel ändern?
Code:
if(isset($_GET['id'])){
$id = $_GET['id'];
if (isset($_SESSION[$id])){
$_SESSION[$id]++;
} else {
$_SESSION[$id]=1;
}
}
Falls ja, dann wie? 
|
|
|
23.04.2008, 14:24
|
#9
|
|
TP-Insider
Registriert seit: Nov 2006
Ort: Lübeck
|
Wenn es alphanumerisch ist, das "intval" weglassen (Kommentar in meinem Schnipsel beachten). Die Uberpruefung auf korrektem Inhalt kann an einer anderen Stelle erfolgen. Man koennte mit "htmlspecialchars" einmal druebergehen. Aber ob das sinnvoll ist, musst du wissen.
Kommt halt darauf an, was du mit der Artikelnummer noch alles anstellst.
Eine weitere Moeglichkeit waere, die Laenge der Artikelnummer zu begrenzen...(das sind alles nur Sicherheitsuebrlegungen und haben nichts mit der Funktion an sich zu tun)
Mit "isset($_GET[$id])" kann man hier nicht so gut arbeiten. Dann hast du naemlich das gleich Problem wie zuvor.
"!empty($_GET[$id])" ist hilfreicher.
Zitat:
|
Könnte es sein, dass wenn z.B. alle Artikelnummern alphanumerisch (4r54r33w) sind, übertragen werden und Artikelnummern, die nur numerisch (576332) sind, nicht weitergeleitet werden?
|
Wenn das wirklich Probleme macht, kommt wieder mein ersteer Vorschlag zum Tragen.
PHP-Code:
$id = ' '.$_GET['id'];
Geändert von Guin (23.04.2008 um 14:30 Uhr).
|
|
|
23.04.2008, 14:42
|
#10
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
mit nichtnumerischen keys würde ich das einfacher abhandeln
PHP-Code:
$id = $_GET['id'] ? $_GET['id'] : uniqid('key_'); if ($_SESSION[$id]) { $_SESSION[$id]++; } else { $_SESSION[$id] = 1; }
|
|
|
23.04.2008, 23:09
|
#11
|
|
TP-Senior
Registriert seit: Dec 2002
Ort: Langenthal
|
Danke für die Hinweise! Mal eine Zwischenfrage für folgendes Codeschnipsel:
Code:
<?php
session_start( );
if(isset($_GET['delete'])){
unset($_SESSION[$_GET['id']]);
if(isset($_GET['change'])){
$_SESSION[$_GET['id']] = $_GET['anzahl'];
}
}
?>
Das obere if funktioniert problemlos. Nun beim zweiten if möchte ich die Anzahl nachträglich ändern. Ist die Syntax
$_SESSION[$_GET['id']] = $_GET['anzahl'];
so richtig, wenn ich sagen will, ersetze die bereits vorhandene Anzahl durch die neue Anzahl, sobald ich den Button "Anzahl ändern" angeklickt habe? Oder gäbe es da eine spezielle Funktion dafür? Hab im PHP-Handbuch nichts gefunden, dass mir etwas zusagen würde.
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 21:43 Uhr.
|
 |