Zapis sesji do bazy danych [mysqli]

0

Mam mały problem ze skryptem. Próbuje dodawac sesje do b.danych z tego tutoriala ( http://shiflett.org/articles/storing-sessions-in-a-database ) ale cos jest nie tak:

Cos pewnie robię zle ale nie mogę się doszukać: Nie iwem jak to wywolywac. Jak próbuje wywołać poszczególne funkcje to nic sie nie dzieje. Jak daje F5 to do bazy dodaje sie timestamp za kazdym razem nowy ale nie dodaje sie ID i DATA.

W bazie jest tak:

https://zapodaj.net/cef933d6a55c3.bmp.html

Pod ID jest nazwa ale skad ta nazwa myprefix- i dlaczego nie dodaje sie data???


$addtable = mysqli_query($conn, "CREATE TABLE sessions(id varchar(32) COLLATE utf8_unicode_ci NOT NULL, access int(10) unsigned, data text COLLATE utf8_unicode_ci, PRIMARY KEY (id))");


<?php
session_set_save_handler('_open',
                         '_close',
                         '_read',
                         '_write',
                         '_destroy',
                         '_clean');
session_start();
					
				
						 
		function _open()
		{
			
			 global $conn;
			
			$conn = mysqli_connect('localhost', 'root@localhost', 'pwd');	
	 
			 if($conn) {
              
			  return mysqli_select_db($conn, "sesje_testy");
			  
            }
 
    return FALSE;
		   

		}
		
		
		
		function _read($id)
{
    global $conn;
 
    $id = mysqli_real_escape_string($conn, $id);
 
    $sql = "SELECT data
            FROM sessions
            WHERE id = '$id'";
			
			if($result = mysqli_query($conn, $sql))
			{
				
				if(mysqli_num_rows($result) > 0) 
				{
				
					$ro = mysqli_fetch_assoc($result);
					
					return $ro['data'];
					
				}
				
			}
 
    
 
    return '';
}


		
		
		
				function _write($id, $data)
           {
               
			   global $conn;
 
    $access = time();
 
    $id = mysqli_real_escape_string($conn, $id);
    $access = mysqli_real_escape_string($conn, $access);
    $data = mysqli_real_escape_string($conn, $data);
 
    $sql = "REPLACE
            INTO sessions
            VALUES ('$id', '$access', '$data')";
 
    return mysqli_query($conn, $sql);
	
             }
			 
			 	
		function _clean($max)
{
    global $conn;
 
    $old = time() - $max;
    $old = mysqli_real_escape_string($conn, $old);
 
    $sql = "DELETE
            FROM sesions
            WHERE access < '$old'";
 
    return mysqli_query($conn, $sql);
}
 
		
		
		function _destroy($id)
{
    global $conn;
 
    $id = mysqli_real_escape_string($conn, $id);
 
    $sql = "DELETE
            FROM sesions
            WHERE id = '$id'";
 
    return mysqli_query($conn, $sql);
}
		
		
	



function _close()
		{
			global $conn;
			
			return mysqli_close($conn);
		}


?>

0

Lepszym pomysłem od wklejenia kodu i zastanawiania się czemu nie działa jest samodzielna próba napisania go. Na Twoim miejscu zrobiłabym tak: Prosty script łączy z bazą i sprawdzenie czy działa jeśli tak użycie funkcji echo jeśli nie też. Następnie próbowałabym jakiegoś baaardzo prostego selecta i też użyła echo. Sprawdź czy masz włączone komunikaty o błędach w php jeśli nie może są jakieś błędy ale Ty nie jesteś tego świadomy i po prostu widzisz pustkę.

0

prosze o usuniecie tego tematu szkoda mojego czasu.

0 użytkowników online, w tym zalogowanych: 0, gości: 0