Gå til innhold

SQL query, insert viss ikke, replace? Codeigniter


Anbefalte innlegg

Hei,

 

Endelig satt meg halveis inn i et rammeverk, codeigniter. Funker kjempeflott!

Har et problem, jeg skal sette alle sessions inn i en tabell som heter sessions.

 

Det funker også kjempefint, men problemet er når man logger inn igjen, for andre gang. (jeg burde slette session når jeg logger ut/den blir for gammel, men er forsatt litt usikker på den delen. Har altså bare laget registrer og login til nå).

 

Får feilmelding om at den allerede eksisterer.

 

Jeg setter inn i databasen sånn:

				$this->db->insert('sessions', $userdata_array); 

 

Og får duplicate_entry error når jeg prøver å sette inn. (Har satt det ene feltet til unique, men vil bare overskrive, men vet ikke hvordan).

 

Noen tips?

Lenke til kommentar
Videoannonse
Annonse

Det er helt umulig å se alternativer uten at vi vet hva som er i userdataarray.

 

Det jeg tenker, hvis dette er registrerte brukere du følge, er å binde sessjonsinformasjon mot brukerobjektet så omgår du hele problemet.

 

Hvis dette er uregistrerte brukere så er forslaget til Mikkel en god løsning. Problemet er at du må inn i rammeverket og endre oppførselen til $this->db->insert()-funksjonen.

Lenke til kommentar

Bruk session klassen. Du kan skru på database der. Det er INGEN grunn til å gjøre dette manuelt sånn du gjør.

Utklipp fra login

	// Set session
	$session = array(
	'user_id' => $this->user_model->get_user_id($this->input->post('username')),
	'username' => $this->input->post('username'),
	'is_logged_in' => true
	);

	$this->session->set_userdata($session);

Utklipp fra logout

	$this->session->set_userdata('is_logged_in',FALSE);
	$this->session->unset_userdata('username');
	$this->session->sess_destroy();
	$this->message_model->success('You have been successfully logged out.');

Lenke til kommentar

I config.php

$config['sess_cookie_name']		= 'my_session';
$config['sess_expiration']		= 0; // Cookie never expires
$config['sess_encrypt_cookie']	= FALSE;
$config['sess_use_database']	= TRUE;
$config['sess_table_name']		= 'my_sessions';
$config['sess_match_ip']		= FALSE;
$config['sess_match_useragent']	= TRUE;
$config['sess_time_to_update'] 	= 300;

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...