php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.03.2010, 13:23  
Benutzer
 
Registriert seit: 22.11.2009
Beiträge: 78
PHP-Kenntnisse:
Anfänger
christophk befindet sich auf einem aufstrebenden Ast
Standard

Ist ja keine Zahl. Ist ja "2" und damit ein String. Was bekommst du für eine Ausgabe, wenn du direkt unter das session_start() ein var_dump($_SESSION) machst? Wird in deinem Browser überhaupt ein Session-Cookie gesetzt? Oder lehnst du Cookies evtl. immer ab? Was ist, wenn du die Session via $_GET weitergibst? (per session_name() . "=" . session_id()) Gruß
christophk ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.03.2010, 14:03  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Deine Funktion liefert keinen String zurück, sondern einen bool
Nö.
Zitat:
(und zwar das Ergebnis der Zuweisung $page = ...),
Richtig. Und das Ergebnis einer Zuweisung ist immer der zugewiesene Wert.
Zitat:
Eine Zahl ist kein gültiger Name/Index für eine Session.
Wieso? Eine Session ist ein normales Array.

Ich tippe eigentlich eher auf eine nicht-funktionierende Session.

Bitte error_reporting (E_ALL!) und display_errors prüfen!
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 30.03.2010, 14:20  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Hi,

habe sein Script mal getestet und wenn ich
Code:
error_reporting(E_ALL);
setze, erhalte ich auch eine Fehlermeldung:
Code:
Notice: Unknown: Skipping numeric key 2 in Unknown on line 0
Mit einem Buchstaben im Index passiert mir das nicht.

Gruß
Asipak ist offline  
Alt 30.03.2010, 14:43  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Interessant. Ist mir unbekannt, dieses Verhalten.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 30.03.2010, 14:50  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich bin auch verwirrt, denn da es kein Fatal Error ist, wird das Script ja bis zum Ende ausgeführt, die Werte in der Session also gesetzt. Ein var_dump() am Scriptende gibt mir auch den Wert aus. Wenn ich allerdings auf den Link klicke, ist die Session leer.

Code:
# Array ( ) Testarray(1) { [2]=>  string(4) "Test" }
Notice: Unknown: Skipping numeric key 2 in Unknown on line 0
Ein Klick auf den Link führt zu:

Code:
Array ( ) 1
Notice: Undefined index: 2 in D:\Programmierung\xampp\htdocs\admin\Testprojekt\test2.php on line 12
# Testarray(1) { [2]=> string(4) "Test" }
Notice: Unknown: Skipping numeric key 2 in Unknown on line 0
PHP-Code:
<?php
error_reporting
(E_ALL);
session_start();


print_r($_SESSION);


if(isset(
$_GET["uid"])) {
  echo 
$_GET["uid"];
  echo 
$_SESSION["2"];
}


function 
Display($url) {
  
$_SESSION["2"]=$url;
  return 
$page "<li><a href=\"?uid=1\">Test</a>";
}

echo 
Display("Test");

var_dump($_SESSION);
Asipak ist offline  
Alt 30.03.2010, 14:59  
Benutzer
 
Registriert seit: 21.02.2010
Beiträge: 78
PHP-Kenntnisse:
Anfänger
comlar befindet sich auf einem aufstrebenden Ast
Standard

Kann nur an der Zahl liegen mit der die Session bezeichnet wird. Nehme ich statt der "2" (was ich eh für eine nicht geeignete Bezeichnung halte) z.B. "url", dann geht es problemlos (leicht angepaßt).

PHP-Code:
<?php session_start();

if(isset(
$_GET['uid'])) 

    echo 
'UID : -'.$_GET['uid'].'-<br/>';
    echo 
'SESSION2 : -'.$_SESSION['url'].'-<br/>';
}


function 
Display($url)
{
    echo 
'URL : -'.$url.'-<br/>';
    
$_SESSION['url'] = $url;
    echo 
'SESSION2 in Funktion : -'.$_SESSION['url'].'-<br/>';
    return 
$page "<li><a href=\"index.php?uid=1\">Test</a>";
}    

echo 
Display("Test");

?>
So erhalte ich jedes Mal einen Inhalt für die Session.
comlar ist offline  
Alt 30.03.2010, 16:30  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Zitat:
Eine Zahl ist kein gültiger Name/Index für eine Session.
Wieso? Eine Session ist ein normales Array.
Das resultiert noch aus alten register_globals-Zeiten. Mit rg=on war $_SESSION['x'] identisch mit $x.
Da $2 aber kein gültiger Variablenname ist, ist dann auch $_SESSION['2'] nicht erlaubt.
ChrisB ist offline  
Alt 30.03.2010, 16:35  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Stimmt vermutlich. Kann ich nicht aber auch ?1=27 in der URL übergeben, ohne dass mir $_GET etwas deratrtiges entgegenspuckt?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 30.03.2010, 17:01  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Stimmt vermutlich. Kann ich nicht aber auch ?1=27 in der URL übergeben, ohne dass mir $_GET etwas deratrtiges entgegenspuckt?
Ja - aber was über GET/POST reinkommt, liegt ja auch ausserhalb des Einflussbereiches von PHP, deshalb haben sie sich an der Stelle wohl nicht getraut, „streng“ zu sein und eine Notice zu feuern.


Aber auf deinen Hinweis hin hab ich das gerade noch mal ausprobiert:
Wenn ich $_SESSION['x'] = 'x' und $_SESSION['2'] = 2 anlege, und per GET y=y&1=1 übergebe, dann liefert mir bei register_globals=on var_dump(get_defined_vars()) folgendes:

Code:
array(...) {
  ["y"]=>
  string(1) "y"
  [1]=>
  string(1) "1"
  ["x"]=>
  &string(1) "x"
...
$_SESSION['x'] wird also zu einer globalen Variablen $x, $_SESSION['2'] wird aber nicht zu einer globalen Variablen $2 umgesetzt.

Die Werte $_GET['y'] und $_GET['1'] hingegen erzeugen offenbar beide eine globale Variable - wobei man auf $1 nicht mal zugreifen kann (parse error), sondern höchstens über $GLOBALS[1] herankommt ...

Das zeigt mal wieder, was für Frickler die PHP-Leute doch sind


Auch interessant finde ich, dass die Meldung
Notice: Unknown: Skipping numeric key 2 in Unknown on line 0
offenbar immer erst ganz am Ende des Scriptes herausgehauen wird.
Wenn ich $_SESSION['2'] = 2; ziemlich oben am Scriptanfang zuweise, danach eine Reihe Kontrollausgaben machen - dann kommen erst diese Kontrollausgaben, und ganz zum Schluss die Notice. Und auch „in Unknown on line 0“ legt den Verdacht nahe, dass diese Überprüfung an eine Stelle im Ablauf reingefrickelt wurde, die erst nach der eigentlichen Verarbeitung kommt.
ChrisB ist offline  
Alt 30.03.2010, 18:59  
Benutzer
 
Registriert seit: 29.03.2010
Beiträge: 69
PHP-Kenntnisse:
Anfänger
kami ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Joo danke so klappt es jetzt der Fehler liegt echt nur an dem Namen den ich für Session gewählt habe. Ändert man den klappt alles.

Vielen dank.

Gruß Kami
kami ist offline  
 


Themen-Optionen
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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
wert mit button an $_session übergeben pfu PHP Tipps 2010 11 04.03.2010 13:50
Operatoren einer Funktion übergeben exminsta PHP-Fortgeschrittene 6 26.08.2009 09:52
[Erledigt] inputwert an andere frames übergeben. lou JavaScript, Ajax und mehr 0 25.06.2009 11:11
[Erledigt] Objekt an Konstruktor übergeben hawkeye78 PHP Tipps 2009 7 28.02.2009 19:01
Formularfelder bilden 2-Dimensionales Array - wie übergeben? JohannLechner PHP Tipps 2009 5 24.02.2009 23:34
[Erledigt] Parameter in JavaScript übergeben stefanus JavaScript, Ajax und mehr 3 24.09.2008 22:51
Variable übergeben mit Register Globals off trunky PHP Tipps 2008 32 08.07.2008 20:30
[Erledigt] Formatierung im Textfeld per Formular mit übergeben PlanLos23 PHP Tipps 2008 2 25.06.2008 09:05
Objekt übergeben Fatal Error PHP Tipps 2007 5 28.12.2005 14:43
Wie kann man alles Variablen übergeben ?? PHP Tipps 2005-2 14 11.09.2005 22:19
Übergeben von Werten beim auswählen einer Combo Box HTML, Usability und Barrierefreiheit 2 26.07.2005 07:32
Zahl an mySQL-DB übergeben bendigo PHP Tipps 2005-2 21 10.07.2005 16:48
Variablen an den Interpreter übergeben PHP Tipps 2005-2 24 04.07.2005 21:43
Wert übergeben... Chrescht PHP Tipps 2005-2 8 01.07.2005 11:47
[Erledigt] Fehlermeldung unterdrücken wenn keine variable übergeben... PHP Tipps 2005 6 20.03.2005 13:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
notice: unknown: skipping numeric key 0 in unknown on line 0, skipping numeric key in unknown on line 0, fehlermeldung notice: unknown: skipping numeric key, session werte übergeben, php session übergabe in bild lind geht nicht, php session zahlen übergeben, $_session übergeben ajax, php session an funktion übergeben, session werte mit link übergeben, session übergeben 2010, php keine sessionwerte?, mit js sessionwerte anzeigen, php session skipping numeric, sessiondaten übergeben, session notice: unknown: skipping numeric key, notice: unknown: skipping numeric key 34 in unknown on line 0, skipping numeric key 0 in unknown on line, notice: unknown: skipping numeric key 4 in unknown on line 0, $_session übergeben

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum