mysqldumper
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 19.04.2008, 15:02   #1
TP-Senior
 
Registriert seit: Dec 2002
Ort: Langenthal
Pixelmaster macht alles soweit korrekt

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!
Pixelmaster ist offline   Mit Zitat antworten


Alt 19.04.2008, 16:26   #2
TP-Insider
 
Registriert seit: Nov 2006
Ort: Lübeck
Guin hilft, wo's gehtGuin hilft, wo's gehtGuin hilft, wo's geht
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'];
Guin ist gerade online   Mit Zitat antworten
Alt 19.04.2008, 16:39   #3
TP-Senior
 
Registriert seit: Dec 2002
Ort: Langenthal
Pixelmaster macht alles soweit korrekt
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.
Pixelmaster ist offline   Mit Zitat antworten
Alt 19.04.2008, 17:09   #4
TP-Insider
 
Registriert seit: Nov 2006
Ort: Lübeck
Guin hilft, wo's gehtGuin hilft, wo's gehtGuin hilft, wo's geht
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;
  }

Guin ist gerade online   Mit Zitat antworten
Alt 19.04.2008, 20:19   #5
TP-Senior
 
Registriert seit: Dec 2002
Ort: Langenthal
Pixelmaster macht alles soweit korrekt
Danke Guin! Werde es mal so ausprobieren und schauen, ob's nun klappt!!!
Pixelmaster ist offline   Mit Zitat antworten
Alt 22.04.2008, 16:23   #6
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Weyhe
DSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's geht
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]).
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 22.04.2008, 17:05   #7
TP-Insider
 
Registriert seit: Nov 2006
Ort: Lübeck
Guin hilft, wo's gehtGuin hilft, wo's gehtGuin hilft, wo's geht
Wenn der Index noch nicht existiert, wird er angelegt.
Es sollen ja verschiedene Artikel(nummern) als Index dienen; der Wert gibt die Anzahl an.
Guin ist gerade online   Mit Zitat antworten
Alt 22.04.2008, 23:29   #8
TP-Senior
 
Registriert seit: Dec 2002
Ort: Langenthal
Pixelmaster macht alles soweit korrekt
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?
Pixelmaster ist offline   Mit Zitat antworten
Alt 23.04.2008, 14:24   #9
TP-Insider
 
Registriert seit: Nov 2006
Ort: Lübeck
Guin hilft, wo's gehtGuin hilft, wo's gehtGuin hilft, wo's geht
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).
Guin ist gerade online   Mit Zitat antworten
Alt 23.04.2008, 14:42   #10
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
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;

__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 23.04.2008, 23:09   #11
TP-Senior
 
Registriert seit: Dec 2002
Ort: Langenthal
Pixelmaster macht alles soweit korrekt
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.
Pixelmaster ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Sessionstart PHP Sessionstart PHP
« Frage mit javascript und Php | MSQL Datenbankabfrage sortiert »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:43 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67