php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.06.2005, 08:26  
Erfahrener Benutzer
 
Registriert seit: 30.05.2005
Beiträge: 222
PHP-Kenntnisse:
Fortgeschritten
Cyberbob_at_tot
Cyberbob_at_tot eine Nachricht über ICQ schicken
Standard SESSIONS über MYSQL Problem - schreiben lesen

Guten morgen zusammen,
ich habe ein Problem, ich will SESSIONS einbauen, und weil nicht alle Browser Cookies unterstützen das ganze über Mysql.
Habe da auch was schönes im Buch "Programmieren lernen in PHP5" gefunden.

Datei:sessiondb.inc.php
Code:
<?php
function ms_open($sesspath, $sessname)
{
   global $DB;	// Datenbankhandle
   $time = time();
   $sessid = session_id();
   $query = "SELECT * FROM currentsession
             WHERE sessionID = '$sessid'";
   $RS = mysql_query($query, $DB);
   if (mysql_num_rows($RS) == 0) {
      $query = "INSERT INTO currentsession
                (sessionID, laccess)
                VALUES ('$sessid', '$time')";
   } else {
      $query = "UPDATE currentsession
                SET laccess = '$time'
                WHERE sessionID = '$sessid'";
   }
   $RS = mysql_query($query, $DB);
   return $RS;
}
function ms_read($sessid) {
   global $DB;
   $query = "SELECT * FROM currentsession
             WHERE sessionID='$sessid'";
   $RS = mysql_query($query, $DB);
   $arrRS = mysql_fetch_assoc($RS);
   if (is_array($arrRS)) {
      return $arrRS[$variables];
   } else {
      return FALSE;
   }
}
function ms_write($sessid, $varis) {
   global $DB;
   $query = "UPDATE currentsession
             SET variables = '$varis'
             WHERE sessionID = '$sessid'";
   $RS = mysql_query($query, $DB);
   return $blnRS;
}
function ms_destroy($sessid) {
   global $DB;
   $query = "DELETE FROM currentsession
             WHERE sessionID = '$sessid'";
   $RS = mysql_query($query, $DB);
   return $RS;
}
function ms_gc($sesslt) {
   global $DB;
   $tStamp = time() - $sesslt;
   $query = "DELETE FROM currentsession
             WHERE laccess < '$tStamp'";
   $intRS = mysql_query($query, $DB);
   return $intRS;
}
function ms_close() {
}
session_module_name("user");
session_set_save_handler('ms_open', 'ms_close',
                         'ms_read', 'ms_write',
                         'ms_destroy', 'ms_gc');
session_name('SESSION');
// Erzeugen Sie folgende Tabelle in der Datenbank:
/*
CREATE TABLE currentsession (
   sessionID varchar(32) NOT NULL,
   usrID bigint(20) NOT NULL,
   variables text NOT NULL,
   laccess int(14),
   PRIMARY KEY (sessionID),
   KEY usrID (usrID)
);
*/
// Ändern Sie hier die Parameter für die Datenbank
$DB = mysql_connect('localhost', 'root', '');
mysql_select_db('mysessiondb', $DB);
session_start();
?>
<html>
	<title>Session</title>
	<link rel="stylesheet" type="text/css" href="my.css">
<body>
<?php
$sessid = session_id();
echo "Aktuelle Session-ID: $sessid";
?>
</body>
</html>
Datei:login.php
Code:
<?PHP
include("sessiondb.inc.php");
session_start();
$s_user=1;
session_register('s_user');
?>
Hier schreib er die 1 richtig als Variabel in mysql, da sehe ich kein Problem

Datei=lesen.php
Code:
<?PHP
//Verbindung zu mysql und DB selection
include("mysqlcon.inc.php");
session_start();

echo"Anzahl der Sessionvariablen:".count($_SESSION)
echo $s_user
?>
Hier ergibt leider die Anzahl 0 und auch die ausgabe der s_user Variable ergibt einfach nichts! Woran könnte das liegen, ich weis leider nicht weiter!
Bin so wie im Buch beschrieben vorgegangen, soweit ich das ganze in der selben datei mache geht das auch, aber sobald ich in einer speicher und in einer anderen auslese gehts nicht meher!...komisch

Was meint ihr dazu, könnt ihr mir dabei helfen?

MFG

Christian
__________________
***********************************
The only winning move is not to play!
***********************************
Cyberbob_at_tot ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.06.2005, 08:33  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

öhm ne DB bringt dir nix wenn dein user keine cookies akzeptiert, das hat nichts miteinander zu tun!

du hast bei sessions 2 möglichkeiten die in einem script, wenn vernünftig geschrieben, zusammen genutzt werden können.

1) die session eben in einem cookie speichern
2) die session in jedem link / formular etc weitergeben

ob du letztendlich dann den session-handler von php fürs dateisystem benutzt oder einen eigenen auf datenbankbasis ist ega.

desweiteren mal nen link auf deine phpinfo

und
session_register('s_user');
ist veraltet und wird nicht mehr gebrauccht, es reicht
session_start zu verwenden und dann
$_SESSION['varname'] = 'value';
und schwups hast du ne variable in deiner Session.

desweiteren ->

error-reporting
Zum testen von Scripts setzt man normalerweise am anfang des scripts (oder direkt in einer config-datei die immer Includet wird)
PHP-Code:
error_reporting(E_ALL); 
damit werden dann alle Fehler ausgegeben.
Mögliche Fehler die dann auftreten und wie man sie beheben kann:
Notice: Use of undefined constant ...
Notice: Undefined variable ...

und mal schauen ob überhaupt von php fehler ausgegeben werden, weil das bei dem ablauf oben wohl passieren müsste, weil du 2 mal session_start verwendest wenn ich das richtig gesehen habe und du ja in der session-datei schon content ausgibst

mfg
robo47
robo47 ist offline  
Alt 06.06.2005, 08:53  
Erfahrener Benutzer
 
Registriert seit: 30.05.2005
Beiträge: 222
PHP-Kenntnisse:
Fortgeschritten
Cyberbob_at_tot
Cyberbob_at_tot eine Nachricht über ICQ schicken
Standard

OK mal sehen ob ich das richtig verstanden habe,
es ist daher eigentlich egal ob ich die SESSIONS in Mysql speicher oder eben in einem Cookie ? dann lasse ich das Handle lieger in der Hand von PHP!

Fehlererkennung werde ich mal einbauen jetzt!

und die zuweisung von Session Variablen über $_SESSION['s_user']=1;

und SESSION_START() nur eimal in der Logindatei und dann nie wieder ?
__________________
***********************************
The only winning move is not to play!
***********************************
Cyberbob_at_tot ist offline  
Alt 06.06.2005, 09:14  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

du includest das eine script ja am anfang, daher reicht session_start
robo47 ist offline  
Alt 06.06.2005, 09:18  
Erfahrener Benutzer
 
Registriert seit: 30.05.2005
Beiträge: 222
PHP-Kenntnisse:
Fortgeschritten
Cyberbob_at_tot
Cyberbob_at_tot eine Nachricht über ICQ schicken
Standard

Habe nun das Error Reporting eingefügt

nun gibt er mir aber
"Notice: Undefinied variabe:mysql_server in..." aus
obwohl ich dir doch defininiert habe und auch ein Wert drin steht!
wie kommt das ?
__________________
***********************************
The only winning move is not to play!
***********************************
Cyberbob_at_tot ist offline  
Alt 06.06.2005, 09:31  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

wo und wie definierst du so?
robo47 ist offline  
Alt 06.06.2005, 09:42  
Erfahrener Benutzer
 
Registriert seit: 30.05.2005
Beiträge: 222
PHP-Kenntnisse:
Fortgeschritten
Cyberbob_at_tot
Cyberbob_at_tot eine Nachricht über ICQ schicken
Standard

Datei>mysqlcon.php

PHP-Code:
<?php

error_reporting
(E_ALL);

//Connectionstring (server ip oder name, User, pwd)
//ohne @ wird die Fehlermeldung von System ausgeben
//mit  @ nur die eigenen Fehlermeldung
 
 
$mysql_server        =    "localhost";    #MySQL Server
 
$mysql_user        =    "root";            #MySQL User
 
$mysql_pass        =    "";                #MySQL Kennwort
 
$mysql_dbase        =    "schumacher";   #Datenbank
 
//Ausgabe des Connectionstatuses
//Rückgabewert 0=Fehlgeschlafen 1 uv. anzahl der Verbindungen

 
$con    =    mysql_connect($myslq_server,$myslq_user,$myslq_pass)
            or die(
"[b]Verbindungsfehler</body></html<");
//echo"MySQL Verbindung = $con";
//echo"
";

//Ausgabe der Datenbankverbindungsstatuses
//Rückgabewert 1=Verbunden 0=Fehlgeschlagen

 $db    =    mysql_select_db($mysql_dbase);
//echo    "
Datenbankverbindung $db";
//echo    "
";

?>
__________________
***********************************
The only winning move is not to play!
***********************************
Cyberbob_at_tot ist offline  
Alt 06.06.2005, 10:10  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

die richtige schreibung ist alles!!


myslq != mysql

:P
robo47 ist offline  
Alt 06.06.2005, 10:29  
Erfahrener Benutzer
 
Registriert seit: 30.05.2005
Beiträge: 222
PHP-Kenntnisse:
Fortgeschritten
Cyberbob_at_tot
Cyberbob_at_tot eine Nachricht über ICQ schicken
Standard

oh shit sorry
__________________
***********************************
The only winning move is not to play!
***********************************
Cyberbob_at_tot ist offline  
Alt 19.09.2005, 13:17  
Gast
 
Beiträge: n/a
Standard Re: SESSIONS über MYSQL Problem - schreiben lesen

Zitat:
Zitat von Cyberbob_at_tot
Habe da auch was schönes im Buch "Programmieren lernen in PHP5" gefunden.
Bist du eigentlich sicher, dass du mit deinem Zitat keine Urheberrechte verletzt?

Viele Grüße
Harry
 
 


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
MySQL Problem fkrauthan PHP-Fortgeschrittene 5 25.01.2008 18:18
mysql problem mit LIKE und AND kazuya Datenbanken 10 29.10.2007 21:36
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
MySQL kodierungs problem Mutatos Datenbanken 0 12.05.2006 20:02
MySQL Problem mit INSERT-Queries Arno Nühm Datenbanken 10 07.04.2006 16:46
Serverumzug - Problem mit MySQL Daten [GE]ReeN Datenbanken 6 28.03.2006 17:02
Mysql / Array Problem marcels PHP Tipps 2006 10 23.03.2006 18:30
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] MYSQL Problem Datenbanken 4 09.02.2006 15:14
[Erledigt] Problem MySQL 3 und 4 PHP-Fortgeschrittene 9 02.08.2005 16:45
Problem mit IIS6 und PHPMyAdmin PHP Tipps 2005-2 4 18.07.2005 21:58
MYSQL root login und logging Problem Datenbanken 2 16.03.2005 08:41
[Erledigt] mysql installations problem Datenbanken 4 16.02.2005 18:46
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Problem mit Sessions in mehreren Frames Chr!s PHP Tipps 2004 10 30.10.2004 18:52

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql fehler session, http://www.php.de/php-tipps-2005-2/24246-sessions-ueber-mysql-problem-schreiben-lesen.html

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:16 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.