WinFuture-Forum.de: Php Session Problem - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Php Session Problem


#1 Mitglied ist offline   skelle 

  • Gruppe: aktive Mitglieder
  • Beiträge: 793
  • Beigetreten: 15. Juli 04
  • Reputation: 0

geschrieben 14. Juli 2010 - 00:41

Hey,
ich hänge glaub grad an einer rel kleinen Sache aber ich blicks grad nich :unsure:

Login:
<?php
	session_start();
	
	include "include/db.inc.php";
	include "include/common.inc.php";
	
	if(isset($_POST['login']))
	{
		connectDatabase();
		login($_POST['user'], $_POST['password']);	
		header("Location: http://localhost/user_control.php");
	}
?>


function login($user, $pass)
	{
			$query = "SELECT MAIL,PASSWORD,ADMIN FROM USERS WHERE mail = '".$user."';";
			$result = mysql_query($query);
			$row = mysql_fetch_assoc($result);			
			
			if($row['PASSWORD'] == md5($pass))
			{
				$_SESSION['user'] = $row['MAIL'];
				$_SESSION['admin'] = $row['ADMIN'];
			}
			else
			{
				echo "Login fehlerhaft";
				die();
			}
	}


session_start();
	
	include "include/db.inc.php";
	include "include/common.inc.php";

	if(!isset($_SESSION['user']) || !isset($_SESSION['admin']))
	{
		echo "Keine Berechtigung!";
		die();
	}


Das erste Codeteil wird ausgeführt... und auch der Login klappt.
Nachdem ich dann allerdings die Headerinfos geändert habe habe ich in $_SESSION (beim 3 Snippet) keine Werte mehr drin zu stehen... woran liegt das?

greetz

Dieser Beitrag wurde von skelle bearbeitet: 14. Juli 2010 - 00:42

0

Anzeige



#2 Mitglied ist offline   Taxidriver05 

  • Gruppe: aktive Mitglieder
  • Beiträge: 2.609
  • Beigetreten: 14. Mai 09
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Schkopau - OT Ermlitz
  • Interessen:- Ausgehen,
    - Sport (am liebsten an der frischen Luft),
    - Musik (machen und hören),
    - Grafik- und Webdesign,
    - gut Essen,
    - an PCs basteln (für den schnellen Euro ;-)),
    uvm.

geschrieben 14. Juli 2010 - 08:08

Vielleicht, weil dir beim 3. Snippet die ELSE-Variante fehlt...
BORN STUPID? TRY AGAIN!

"Himmlische Ruhe und tödliche Stille haben dieselbe Phonzahl."
My Music
0

#3 Mitglied ist offline   DarkAlucard 

  • Gruppe: aktive Mitglieder
  • Beiträge: 468
  • Beigetreten: 04. Dezember 09
  • Reputation: 5
  • Geschlecht:Männlich

geschrieben 14. Juli 2010 - 09:17

Ich bin nicht der Session experte, aber öffnest du nicht in 1) schon eine Session und in 3) dann nochmal?
Du benutzt VMware Server 2, aber das Webplugin um auf die VMs zuzugreifen nervt dich extrem?
Probier meine GUI, den VMRConnector
(Alucards Vmware Vmrc-gui)
Eingefügtes Bild
0

#4 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 14. Juli 2010 - 09:24

@Taxidriver05: Und dann?

@DarkAlucard: Nene, ist schon richtig so.

@skelle
Außer einer möglichen SQL-Injection sehe ich auf den ersten Blick keine Probleme in deinem Code.

Wird die Session in den eingebundenen Dateien gelöscht?
Was zeigen denn Testausgaben an, wie die Session-ID?
Hast du Cookies erlaubt?
Irgendwelche besonderen Konfigurationen vorgenommen? http://de.php.net/ma...nfiguration.php
0

#5 Mitglied ist offline   zwutz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 652
  • Beigetreten: 17. Juli 07
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 14. Juli 2010 - 09:26

Beitrag anzeigenZitat (DarkAlucard: 14.07.2010, 10:17)

Ich bin nicht der Session experte, aber öffnest du nicht in 1) schon eine Session und in 3) dann nochmal?


session_start übernimmt auch bestehende sessions, wenn eine existiert.

@Topic: ich vermute, deine login-Funktion braucht ebenfalls ein session_start();
Raise your glass if you are wrong
0

#6 Mitglied ist offline   skelle 

  • Gruppe: aktive Mitglieder
  • Beiträge: 793
  • Beigetreten: 15. Juli 04
  • Reputation: 0

geschrieben 14. Juli 2010 - 10:47

hey
ich habe eben mal die session ids ausgeben lasssen...

ablauf:
login.php -> wenn button gedrück redirect zu user_control.php

db.inc.php beinhaltet db daten und funktion zum verbinden
common.inc.php enthält atm nur die funktion zum login eines users

ich erhalte auf den beiden seiten allerdings verschiedene session_ids's... das wird auch der grund für den fehler sein aber wieso erhalte ich versch sessions?
cookies sind erlaubt und auch sonst hab ich im moment nichts gross verändert an den configs

was kann der grund für die versch sessions sein?

greetz

p.s. die sache mit den injections werde ich nocheinbauen :unsure:
0

#7 Mitglied ist offline   zwutz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 652
  • Beigetreten: 17. Juli 07
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 14. Juli 2010 - 11:04

weil die session-id nie übergeben wird

Zitat

Hinweis: Die Session-ID wird nicht mit dem Location-Header übermittelt, selbst wenn session.use_trans_sid eingeschaltet ist. Sie muss daher manuell durch Verwendung der SID-Konstante hinzugefügt werden.


Also entweder an die URL anhängen oder Cookies nutzen
Raise your glass if you are wrong
0

#8 Mitglied ist offline   skelle 

  • Gruppe: aktive Mitglieder
  • Beiträge: 793
  • Beigetreten: 15. Juli 04
  • Reputation: 0

geschrieben 14. Juli 2010 - 11:07

Beitrag anzeigenZitat (zwutz: 14.07.2010, 12:04)

weil die session-id nie übergeben wird



Also entweder an die URL anhängen oder Cookies nutzen


danke:)
ich hatte mir schon etwas ähnliches gedacht ^^
0

#9 Mitglied ist offline   Texer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 23
  • Beigetreten: 15. September 02
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Saalfeld
  • Interessen:PHP, Motocross (Freestyle)

geschrieben 17. Juni 2011 - 07:03

Du hast auf jeden Fall ein Sicherheitsprob bei dem Code, siehe: Wiki: SQL-Injection und verwende bei Strings ' statt " . PHP brauch ja nicht den String auf Variablen prüfen, wenn eh keine drin sind.

Ich mein das hier:

<?php
	session_start();
	
	include 'include/db.inc.php';
	include 'include/common.inc.php';
	
	if(isset($_POST['login']))
	{
		connectDatabase();
		login($_POST['user'], $_POST['password']);	
		header('Location: http://localhost/user_control.php');
	}
?>


Deinen Code für die DB-Anfrage sichern.

function login($user, $pass){
			$query = mysql_query("SELECT `MAIL`,`PASSWORD`,`ADMIN` FROM `USERS` WHERE `mail` = '".mysql_real_escape_string($user)."');
			$row = mysql_fetch_assoc($query);			
			
			if($row['PASSWORD'] == md5($pass))
			{
				$_SESSION['user'] = $row['MAIL'];
				$_SESSION['admin'] = $row['ADMIN'];
			}
			else
			{
				echo 'Login fehlerhaft';
				die();
			}
}

0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0