Loginscript - No Database selected

testarrow

Mitglied
Servus,

und erstma Sorry. Ich weiß, dass dieses Thema schon mehrmals besprochen wurde. Ich habe auch ziemlich viel bei google nachgeguckt und hie **schviel gelesen, doch nichts hat mir weitergeholfen.
Achja, vielleicht liegt es ja daran, dass ich en Php-newbie bin ;) .

Erst hab ich versucht selber meine Idee zu verwirklichen, hab mich dann doch für einen fremden Script entschieden. Unzwar einen von php-resource ..Hab leider keine Ahnung wo dieser genau zu finden ist.

Mein Problem ist, dass egal was ich mache eine Fehlermeldung erscheint. Das Login-Formular wird vollständig angezeigt, auch links und die dann entsprechende Formulare. Doch wenn man etwas abschickt erscheint eine Fehlermeldung :
Code:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/export/www/hosting/anton4president/index.php on line 173
Unbekannter Benutzername!
bei Login

und Unbekannter Benutzername erscheint obwohl ich den Benutzer manuell eingefügt habe.

naja eine Anzeige des Fehlers durch "or die" sagt dann "No Database Selected".

ich flipp gleich aus. Hab schon einiges ausprobiert, doch es will einfach nicht funktionieren.

Wo kann das Problem liegen?
Was hat es mit "global" auf sich?


bitte helft mir.

MFG
testarrow



Index.php
PHP:
<?

# Hier ggf. den Header einfügen!


if      ($anmelden) { anmelden($fertig, $user, $password1, $password2, $email);}
else if ($abmelden) { abmelden($fertig, $user, $password);}
else if ($forgot)   { forgot($fertig, $email);}
else                { login($fertig, $user, $password);}


# hier ggf. den Footer einfügen!

?>



<?
function inhalt($user) 
{
session_start();
session_register("user");


##################################
#Bauen Sie hier Ihren Inhalt ein!#
#                                #
?>


	<b>Geschützter Inhalt!</b>

	
<?
#				   			  	 #
#   Ab hier nichts mehr ändern!	 #
##################################


}
?>



<?
function login($fertig, $user, $password)
{
include("config.php");

if ($fertig) {

$sql = "SELECT * FROM login WHERE user = '$user'";
$abfrage = mysql_query ($sql);
$reihen = mysql_num_rows($abfrage);
if ($reihen <= 0) {
echo "Unbekannter Benutzername!";
}
else {
while ($row = mysql_fetch_object ($abfrage)) {
if ($row->password==$password) {
inhalt($user);
}
else {
echo "Falsches Passwort!";
}
}
}

}

else {
echo "Zum anmelden geht es <a href=\"$PHP_SELF?anmelden=yes\">hier</a> lang!";
echo "<p><h2>Login</h2></p>";

	echo "<form method=\"POST\" action=\"$PHP_SELF?fertig=yes\">";
	?>
	<table cellspacing="1" cellpadding="2" border="0">
    <tr>
    <td><font size="2">Benutzername:</font></td>
    <td><font size="2"><input type="text" name="user" value="">&nbsp;</font></td>
  </tr>
  <tr>
    <td><font size="2">Passwort:</font></td>
    <td><font size="2"><input type="password" name="password" value=""></font></td>
  </tr>
  <tr>
    <td colspan=2 align=center><input type=submit value=Login></td>
  </tr>
</table>
</form>
<? 
echo "<p><a href=\"$PHP_SELF?forgot=yes\">Passwort vergessen?</a><br><a href=\"$PHP_SELF?abmelden=yes\">Abmelden</a></p>";
}

}
?>


<?
function anmelden ($fertig, $user, $password1, $password2, $email)
{
include("config.php");

if($fertig) {
 $abfrage1 = mysql_query("SELECT user FROM login");
 while ($row = mysql_fetch_object ($abfrage1)) {
	if	($row->user==$user) {
	echo "Dieser Benutzer existiert schon!";
	exit;
	}
	}
	if ($user=="" OR $password1=="" OR $password2=="" or $email=="") {
	echo "Sie haben mindestens ein Feld nicht ausgefüllt!";
	}
	else if ($password1!=$password2) {
	echo "Ihr Passwort ist ungleich Ihrer Wiederholung!";
	}
	else {	
	$anfuegen=mysql_query("INSERT INTO login (user, password, email) VALUES ('$user','$password1', '$email')");	
	echo "Erfolgreich angemeldet! Sie können sich nun einloggen:<br>";
	@login();	
	}
}
else {
	echo "<h2>Anmelden</h2>";
	echo "<form method=\"POST\" action=\"$PHP_SELF?anmelden=yes&fertig=yes\">";
	?>
	<table cellspacing="1" cellpadding="2" border="0">
    <tr>
    <td><font size="2">Benutzername:</font></td>
    <td><font size="2"><input type="text" name="user" value="">&nbsp;</font></td>
  </tr>
  <tr>
    <td><font size="2">Passwort:</font></td>
    <td><font size="2"><input type="password" name="password1" value=""></font></td>
  </tr>
  <tr>
    <td><font size="2">Wiederholen:</font></td>
    <td><font size="2"><input type="password" name="password2" value=""></font></td>
  </tr>
  <tr>
    <td><font size="2">E-Mail:</font></td>
    <td><font size="2"><input type="text" name="email" value="">&nbsp;</font></td>
  </tr>
  <tr>
    <td colspan=2 align=center><input type=submit value=Anmelden></td>
  </tr>
</table>
</form>
<? 
}

}
?>




<?
function forgot ($fertig, $email)
{

include("config.php");

if ($fertig) {
$abfrage=mysql_query("SELECT * FROM login");
while ($row = mysql_fetch_object ($abfrage)) {
if ($email==$row->email) { $ismail="true"; } 
}
if ($ismail=="true") {
$password=mysql_query("SELECT * FROM login WHERE email = '$email'");
while ($row = mysql_fetch_object ($password)) {
$nachricht="Hallo $row->user!\n\nIhr Passwort ist:\n\n$row->password\n\nMfG\nAdmin";
}
mail($email, "Passwort", $nachricht, "From: Administrator");
?>
<p>Das Passwort wurde Ihnen erfolgreich an die Adresse <i><? echo $email; ?></i> geschickt!<br>
Rufen Sie Ihre E-Mails ab und loggen Sie sich ein.<br></p>

<?

@login();
}
else { echo "Ihre angegebene E-Mail Adresse wurde nicht gefunden!";}
}
else {

echo "<p><h2>Passwort vergessen</h2><p>";
echo "<p><form method=post action=\"$PHP_SELF?forgot=yes&fertig=yes\">";
?>
<table cellspacing="1" cellpadding="2" border="0">
<tr><td><font size="2">E-Mail Adresse:</font></td><td align=center><input type=text name=email></td></tr>
<tr><td colspan="2" align=center><input type=submit value="Schicken!"></td></tr>
</table></form></p>
<?
}
}
?>



<?
function abmelden($fertig, $user, $password)
{

include ("config.php");

if($fertig) {
$abfrage = mysql_query ("SELECT * FROM login WHERE user = '$user'");
$reihen = mysql_num_rows($abfrage);
if ($reihen <= 0) {
echo "Unbekannter Benutzername!";
}
else {
while ($row = mysql_fetch_object ($abfrage)) {
if ($row->password==$password) {
$delete = mysql_query ("DELETE FROM login WHERE user = '$user'");
echo "Ihre Daten wurden erfolgreich aus der Datenbank entfernt!";
}
else {
echo "Falsches Passwort!";
}
}
}

}
else {
	 echo "<p><h2>Abmelden</h2></p>"; 
	echo "<form method=\"POST\" action=\"$PHP_SELF?abmelden=yes&fertig=yes\">";
	?>
	<table cellspacing="1" cellpadding="2" border="0">
    <tr>
    <td><font size="2">Benutzername:</font></td>
    <td><font size="2"><input type="text" name="user" value="">&nbsp;</font></td>
  </tr>
  <tr>
    <td><font size="2">Passwort:</font></td>
    <td><font size="2"><input type="password" name="password" value=""></font></td>
  </tr>
  <tr>
    <td colspan=2 align=center><input type=submit value=Abmelden></td>
  </tr>
</table>
</form>
<?
}

}
?>


UND

PHP:
<?
$server = "localhost";
$benutzer = "anton4president";
$passwort = "*****************";
$datenbank = "login"; 

mysql_connect($server,$benutzer,$passwort); 
mysql_select_db($datenbank); 
?>
 
Hallo!

The Nephilim dürfte mit seiner Vermutung schon richtig liegen.
Übersetzt heisst es im Script ja mysql_select_db("login")..... und wie am Select zu sehen ist, heisst die Tabelle "login".
Ich meine zwar dass es theoretisch möglich währe in der Datenbank "login" eine Tabelle "login" anzulegen, halte dieses aber nicht für sonderlich sinnvoll..... währe auch eher ungewöhnlich.
Von daher vermute ich auch dass bei $datenbank etwas anderes stehen muss..... nämlich der Datenbankname und nicht der Tabellenname.

Es währe aber auch interessant was in phpinfo() zu register_globals steht..... mir sprang nämlich gleich als erstes $PHP_SELF ins Auge. ;)

Gruss Dr Dau
 
Vielen vielen Dank erstmal Leute.

War tatsächlich ein Leichtsinnigkeitsfehler. Umsonst habe ich den Script zig male umgeschrieben. Aber naja, was geschehn ist ist eben geschehn.

Aber es hört noch lange nicht auf ;)

Username und Passwort stimmen --> führt zu das hier:

Code:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /usr/export/www/hosting/anton4president/index.php:85) in /usr/export/www/hosting/anton4president/index.php on line 140

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /usr/export/www/hosting/anton4president/index.php:85) in /usr/export/www/hosting/anton4president/index.php on line 140
Geschützter Inhalt!

Also, Erst kommt eine Fehlermeldung und danach wird trotzdem der Inhalt angezeigt.
Was die Fehlermeldung mir sagen will, versteh ich nur so wie wenn einer mit mir spanisch sprechen würde.

Erlaubt mir der Server irgendwas nicht? Vll eine Session zu starten?

ist ein Freeserver.

PHPINFO

MFG
testarrow
 
Zuletzt bearbeitet:
Vor session_start() darf keinerlei Code an den Browser gesendet werden. Also session_start immer ganz am Anfang vom Code schreiben.
 
hmmmm.....

OK. Das ganze sagt mir schon was, jedoch hab ich grad keine Ahnung wie ich das anstellen soll...

das ganze sieht bei mir so aus:

PHP:
...........
 ..... </table></td>
        <td width="392" height="25" align="right" valign="middle" background="imgx/b_background.gif"></td>
        <td background="imgx/b__right.gif" height="25" width="27">&nbsp;</td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td align="center" valign="top" bgcolor="#000000">
<?

# Hier ggf. den Header einfügen!


if      ($anmelden) { anmelden($fertig, $user, $password1, $password2, $email);}
else if ($abmelden) { abmelden($fertig, $user, $password);}
else if ($forgot)   { forgot($fertig, $email);}
else                { login($fertig, $user, $password);}


# hier ggf. den Footer einfügen!

?>



<?
function inhalt($user) 
{
session_start();
session_register("user");

?>


	<b>Geschützter Inhalt!</b>

	
<?

}
?>



<?
function login($fertig, $user, $password)
{
include("config.php");

if ($fertig) {

$sql = "SELECT * FROM login WHERE user = '$user'";
$abfrage = mysql_query ($sql);
$reihen = mysql_num_rows($abfrage);
if ($reihen <= 0) {
echo "Unbekannter Benutzername!";
}
else .....

Nur ein Ausschnitt um zu zeigen, dass das ganze mitten in einem Table ist.
So! Wenn ich jetzt
Code:
<?
function inhalt($user) 
{
session_start();
session_register("user");

?>
rauskopier und ganz vor an die erste Stelle setze passiert etwas sehr seltsames, was ich überhaupt nicht verstehe. Unzwar wird dann nur die Image am ende vom Gesamtcode angezeigt, die wo mein Name etc. angezeigt wird.

!?

Ich hab das Ganze jetzt umgeschrieben, möglicherweise nur die Stellung der "Bauteile" umgestellt so, dass sich eigentlich nichts verändert hat.

QUELLCODE---> http://anton4president.an.ohost.de/source.txt

MFG
 
Zurück