Probleme mit ausgelagerten Logindaten für Datenbank

staypunk

Grünschnabel
Hallo

Ich habe das Login-Tutorial http://www.tutorials.de/tutorials9684.html durchgemacht.

Jetzt möchte ich die Logindaten der Datenbank in einer Externen Datei speichern. Sobald ich aber

Code:
$connectionid = mysql_connect ("localhost", "root", "999999");

durch

Code:
include('../mysql.inc.php');
$connection = mysql_connect($sql['host'],$sql['uid'],$sql['pwd']);

ersetze, kommt beim Ausführen folgende Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at F:\Server\htdocs\mond\login\mysql.inc.php:8) in F:\Server\htdocs\mond\login\tut2\login.php on line 34

in Zeile 34 steht
Code:
header ("Location: intern.php");

hier noch das ganze Script:

Code:
<?php  
// Session starten 
session_start (); 

// Datenbankverbindung aufbauen  
//$connectionid = mysql_connect ("localhost", "root", "860129");  
include('../mysql.inc.php');
$connectionid = mysql_connect($sql['host'],$sql['uid'],$sql['pwd']);
if (!mysql_select_db ("mond", $connectionid))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  

$sql = "SELECT ".  
    "Id, Nickname, Nachname, Vorname ".  
  "FROM ".  
    "benutzerdaten ".  
  "WHERE ".  
    "(Nickname like '".$_REQUEST["name"]."') AND ".  
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";  
$result = mysql_query ($sql);  

if (mysql_num_rows ($result) > 0)  
{  
  // Benutzerdaten in ein Array auslesen.  
  $data = mysql_fetch_array ($result);  

  // Sessionvariablen erstellen und registrieren  
  $_SESSION["user_id"] = $data["Id"];  
  $_SESSION["user_nickname"] = $data["Nickname"];  
  $_SESSION["user_nachname"] = $data["Nachname"];  
  $_SESSION["user_vorname"] = $data["Vorname"];  

  header ("Location: intern.php");  
}  
else  
{  
  header ("Location: formular.php?fehler=1");  
}  
?>

Kann mir jemand sagen, wo der Fehler liegt?

Vielen Dank!
 
mysql.inc.php:
Code:
<html>
<head>
<title>Konfigurationsdatei</title>
</head>

<body>

<?php
	$sql['host'] = 'localhost';
	$sql['uid']= 'root';
	$sql['pwd'] = '******';
	$sql['db'] = 'mond';
?>

</body>
</html>
 
Mach das:
HTML:
<html>
<head>
<title>Konfigurationsdatei</title>
</head>

<body>

und das:

HTML:
</body>
</html>

weg! Denn das ist eine Ausgabe und sobald eine Ausgabe vorhanden ist bevor du die header() Funktion nutzt dann werden die Headers gesendet bevor PHP diese Bearbeiten kann. Und darauf folgt die Meldung.
 
Ich habe es geändert, jedoch kommt immernoch die selbe Meldung.

login.php:
Code:
<?php  
// Session starten 
session_start (); 

// Datenbankverbindung aufbauen  
include('../mysql.inc.php');
$connectionid = mysql_connect($sql['host'],$sql['uid'],$sql['pwd']);
if (!mysql_select_db ("mond", $connectionid))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  

$sql = "SELECT ".  
    "Id, Nickname, Nachname, Vorname ".  
  "FROM ".  
    "benutzerdaten ".  
  "WHERE ".  
    "(Nickname like '".$_REQUEST["name"]."') AND ".  
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')";  
$result = mysql_query ($sql);  

if (mysql_num_rows ($result) > 0)  
{  
  // Benutzerdaten in ein Array auslesen.  
  $data = mysql_fetch_array ($result);  

  // Sessionvariablen erstellen und registrieren  
  $_SESSION["user_id"] = $data["Id"];  
  $_SESSION["user_nickname"] = $data["Nickname"];  
  $_SESSION["user_nachname"] = $data["Nachname"];  
  $_SESSION["user_vorname"] = $data["Vorname"];  

  header ("Location: intern.php");  
}  
else  
{  
  header ("Location: formular.php?fehler=1");  
}  
?>

mysql.inc.php:
Code:
<?php
	$sql['host'] = 'localhost';
	$sql['uid']= 'root';
	$sql['pwd'] = '******';
	$sql['db'] = 'mond';
?>

Hier noch die Datei aus der der Header kommt:
intern.php:
Code:
<?php  
include ("checkuser.php");
?>
  
<html>  
<head>  
  <title>Interne Seite</title>  
</head>  

<body>  
  
  BenutzerId: 
  	<?php 
  		echo $_SESSION["user_id"]; 
  	?>
  	
  <br>  
  
  Nickname: 
  	<?php 
  		echo $_SESSION["user_nickname"]; 
  	?>
  	
  <br>  
  
  Nachname: 
  	<?php 
  		echo $_SESSION["user_nachname"]; 
  	?>
  	
  <br> 
   
  Vorname: 
  	<?php 
  		echo $_SESSION["user_vorname"]; 
  	?>  
  	
  <hr>  
  
  <a href="logout.php">Ausloggen</a>  
</body>  

</html>

Und die Datei checkuser.php:
Code:
<?php  
session_start ();  
if (!isset ($_SESSION["user_id"]))  
{  
  header ("Location: formular.php");  
}  
?>
 
Ist es GENAU diese Fehlermeldung oder ist ein Pfad oder ein Dateiname anders?

Code:
Warning: Cannot modify header information - headers already sent by (output started at F:\Server\htdocs\mond\login\mysql.inc.php:8) in F:\Server\htdocs\mond\login\tut2\login.php on line 34
 
Genau diese Meldung:

Code:
Warning: Cannot modify header information - headers already sent by (output started at F:\Server\htdocs\mond\login\mysql.inc.php:8) in F:\Server\htdocs\mond\login\tut2\login.php on line 35

auf Zeile 35 steht
Code:
  header ("Location: intern.php");

Danke für deine Geduld ;)
 
Ok! Das Problem ist, dass du wahrscheinlich immer noch eine Ausgabe hast. Denn Leerzeichen (und Zeilenumbrüche, bin mir da aber nicht ganz sicher) gelten für das PHP-Script auch als Ausgabe. Es darf vor und nach dem

PHP:
<?php
	$sql['host'] = 'localhost';
	$sql['uid']= 'root';
	$sql['pwd'] = '******';
	$sql['db'] = 'mond';
?>

kein Leerzeichen (oder ein Zeilenumbruch) oder sonstiges stehen! Danach müsste es funktionieren! Ich vermute dass du auf Zeile 8 ein Leerzeichen oder dergleichen ist! Lösch einfach alles vorher und nachher KOMPLETT weg.
 

Neue Beiträge

Zurück