• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Abfrage

Status
Für weitere Antworten geschlossen.

RaZ0oR

Neues Mitglied
PHP:
<?php
$benutzer=$HTTP_POST_VARS['benutzer'];
$pass=$HTTP_POST_VARS['pass'];
$db=mysql_connect("", "", "")
or die ("<b>Zur Zeit kein Connect zum Datenbankserver!</b>");
mysql_select_db("pascal")
or die ("<b>Datenbank konnte nicht angesprochen werden</b>");
$anfrage="SELECT * FROM login WHERE Benutzer LIKE '";
$anfrage.=$benutzer;
$anfrage.="'";
$ergebnis=mysql_query($anfrage)
or die ("<b>Fehler bei der Datenbankanfrage</b>");
$anz=mysql_num_rows($ergebnis);
if ($anz==1) {
$zeile=mysql_fetch_row($ergebnis)
or die ("<b>Der Datensatz konnte nicht ermittelt werden</b>");
if ($pass==$zeile[1]) {
print ("<meta http-equiv='refresh' content='0; URL=../../test.php' />");
}
 
}
else {
print("Zugangsdaten falsch, bitte logge dich mit den<br>richtigen Zugangsdaten ein!!!!<br>Wenn du deine Datenvergessen hast, sag einem Admin bescheid");
}
mysql_close($db);
?>
Wie ihr oben vielleicht seht wird nur die erste Zeile der Datenbank abgrfragt!
PHP:
if ($anz==1) {
    $zeile=mysql_fetch_row($ergebnis)
      or die ("<b>Der Datensatz konnte nicht ermittelt werden</b>");
    if ($pass==$zeile[1]) {
        print ("<meta http-equiv='refresh' content='0; URL=../../test.php' />");
      }

Da ich einige Zeilen in meinern DB habe, und cih nicht andauernd mit else if irgendwelche abfargen zu ertsellen, kannn ich den auch irgendwie machen das alles auf einmal abgrfragt wird nicht nur zeile 1?
PHP:
if ($anz==ALLE ZEILEN) {
    $zeile=mysql_fetch_row($ergebnis)
      or die ("<b>Der Datensatz konnte nicht ermittelt werden</b>");
    if ($pass==$zeile[ALLE ZEILEN]) {
        print ("<meta http-equiv='refresh' content='0; URL=../../test.php' />");
      }
 
Was meinst du? Du fragst die Anzahl an Datensaetzen ab, die du aus der Tabelle geholt hast. Was willst du da sonst machen?


btw: Schau dir in meiner Sig mal Link 1 & 2 an.
Und rueck mal dein gesamtes Script ein, sieht ja grauenhaft aus...
 
ist "ALLE ZEILEN" eine definierte konstante? wenn ja, wo und ich mach' dich darauf aufmerksam, dass da keine leerzeichen erlaubt sind.

Nils aka XraYSoLo
 
nee ist es nicht ;),
bin nich so gut in erklären, mhm, ich hab keine ahnung wie ich es sonst erklären soll^^
 
nee ist es nicht ;),
bin nich so gut in erklären, mhm, ich hab keine ahnung wie ich es sonst erklären soll^^
Dann haben wir keine Ahnung, wie wir dir helfen sollen :roll:


Ausserdem hast du doch nur Zwei if-Abfrage, willst du das etwa reduzieren?
 
und noch was, du müsstest wissen, dass es kein $HTTP_POST_VARS mehr gibt.

Nils aka XraYSoLo
Bei mir funkt es aber^^

Eigendlich wollte ich nu vermeiden das ich mit else arbeiten muss...
PHP:
  <?php
 $benutzer=$HTTP_POST_VARS['benutzer'];
 $pass=$HTTP_POST_VARS['pass'];
 $db=mysql_connect("", "", "")
  or die ("<b>Zur Zeit kein Connect zum Datenbankserver!</b>");
mysql_select_db("pascal")
  or die ("<b>Datenbank konnte nicht angesprochen werden</b>");
$anfrage="SELECT * FROM login WHERE Benutzer LIKE '";
$anfrage.=$benutzer;
$anfrage.="'";
$ergebnis=mysql_query($anfrage)
  or die ("<b>Fehler bei der Datenbankanfrage</b>");
$anz=mysql_num_rows($ergebnis);
if ($anz==2) {
    $zeile=mysql_fetch_row($ergebnis)
      or die ("<b>Der Datensatz konnte nicht ermittelt werden</b>");
    if ($pass==$zeile[2]) {
        print ("<meta http-equiv='refresh' content='0; URL=test.php' />");
      }
   
}
  else ($anz==1) {
        $zeile=mysql_fetch_row($ergebnis)
          or die ("<b>Der Datensatz konnte nicht ermittelt werden</b>");
    else ($pass==$zeile[1]) {
        print ("<meta http-equiv='refresh' content='0; URL=test.php' />");
      }

 print("Zugangsdaten falsch, bitte logge dich mit den<br>richtigen Zugangsdaten ein!!!!<br>Wenn du deine Datenvergessen hast, sag einem Admin bescheid");
    }
 mysql_close($db);
?>

Aber an der if abfrage ist auch ein fehler, mhm muss ich wohl ncoh mal alles überarbeiten
 
Was ist das denn:
PHP:
else ($pass==$zeile[1]) {
:roll:


Ausserdem scheint es, als ob du immernoch nicht auf meinen Rat im ersten Post gehoert haettest :roll:


Schau dir das hier mal an: [phpnet]mysql_fetch_assoc[/phpnet], das duerfte dein Problem loesen.
 
Was ist das denn:
PHP:
else ($pass==$zeile[1]) {
:roll:


Ausserdem scheint es, als ob du immernoch nicht auf meinen Rat im ersten Post gehoert haettest :roll:


Schau dir das hier mal an: [phpnet]mysql_fetch_assoc[/phpnet], das duerfte dein Problem loesen.

Hilft mir leider nicht ;),
Also ich fang am besten noch mal neu an!!!
Ich hab hier für viel zu viel verwirrung gesorgt sry^^

HTML:
<form name="Eingabe" action="check.php" method="post">
          <table width="100%">
    <tr>
    <td>
Name: </td>
<td><input type="text" name="benutzer" size="17,5"><br></td>
</tr>
<tr>
<td>Passwort:</td>
<td>
  <input type="password" name="pass" size="17,5">
  </td>
</tr>
<tr>
<td>&nbsp;</td>
  <td><input type="submit" value="Login">
       <input type="reset" value="Reset"></td>
</tr>
</table>
</form>

Hiermit werden die Daten an die datei check.php geseendet!
PHP:
  <?php
 $benutzer=$_POST['benutzer'];
 $pass=$_POST['pass'];
 $db=mysql_connect("", "", "")
  or die ("<b>Zur Zeit kein Connect zum Datenbankserver!</b>");
mysql_select_db("pascal")
  or die ("<b>Datenbank konnte nicht angesprochen werden</b>");
$anfrage="SELECT * FROM login WHERE Benutzer LIKE '";
$anfrage.=$benutzer;
$anfrage.="'";
$ergebnis=mysql_query($anfrage)
  or die ("<b>Fehler bei der Datenbankanfrage</b>");
$anz=mysql_num_rows($ergebnis);
if ($anz==1) {  //Benutername überprüfen
    $zeile=mysql_fetch_row($ergebnis)
      or die ("<b>Der Datensatz konnte nicht ermittelt werden</b>");
    if ($pass==$zeile[1]) {  //Passwort überprüfen
        print ("<meta http-equiv='refresh' content='0; URL=test.php' />");
      }
   
}
 
 print("Zugangsdaten falsch, bitte logge dich mit den<br>richtigen Zugangsdaten ein!!!!<br>Wenn du deine Datenvergessen hast, sag einem Admin bescheid");
    }
 mysql_close($db);
?>
Mit dem Code werden dann die Daten in der Datenbank vergleicht, und falls es eine übereinstimmung geben sollte, wird zu test.php weitergeleitet!
Aber da ich ja nicht nur einen Datensatz habe sondern mehre, würde ich gerne wissen, wie ich mache das mehrere Dinge mit der Datenbank verglichen werden.
Ich glaube jetzt sollte ich es gut erklärt haben ;)!
 
Dann hast du wohl was falsch verstanden. #php/QuakeNet Tutorial - MySQL / Mit PHP aus MySQL lesen

Du bekommst mit mysql_fetch_[row|assoc|object|array] immer nur genau einen Datensatz und mit dem Index des Arrays greifst du auf die entsprechende Spalte zu.

btw: Willst du es etwa zulassen, dass verschiedene User den gleichen Usernamen haben koennen? ...
 
Dann hast du wohl was falsch verstanden. #php/QuakeNet Tutorial - MySQL / Mit PHP aus MySQL lesen

Du bekommst mit mysql_fetch_[row|assoc|object|array] immer nur genau einen Datensatz und mit dem Index des Arrays greifst du auf die entsprechende Spalte zu.

btw: Willst du es etwa zulassen, dass verschiedene User den gleichen Usernamen haben koennen? ...

Ne will ich nicht ;), ich hab die Benutername schon in die DB eingetragen, man kann sich vorerst nicht regestrieren
 
Ne will ich nicht ;), ich hab die Benutername schon in die DB eingetragen, man kann sich vorerst nicht regestrieren
Wieso willst du dann 2 verschiedene Spalten auf ihren Wert hin abfragen? Du solltest in deiner Tabelle genau eine Spalte "passwort" haben, diese fragst du dann ab:
PHP:
$qry = "SELECT
           *
       FROM
           login
       WHERE
           username = '".mysql_real_escape_string($_POST['username'])."'";
$sql = mysql_query($qry) OR die(mysql_error());
if(mysql_num_rows($sql)){
    $erg = mysql_fetch_assoc($sql);
    if($erg['passwort'] == md5($_POST['passwort'])){ //Das Passwort sollte mindestens mit md5 gehasht sein!
        echo "Eingeloggt"
        //Session starten etc.
    } else {
        echo "Falsches passwort";
    }
} else {
    echo "Dieser Benutzername existiert nicht in der Datenbank.";
}
 
Dankeschön,
hat super geklappt thx!!!!:!:

Edit: gibt doch noch ein problem :-(

PHP:
$qry = "SELECT 
           * 
       FROM 
           login 
       WHERE 
           benutzer = '".mysql_real_escape_string($_POST['benutzer'])."'"; 
$sql = mysql_query($qry) OR die(mysql_error()); 
if(mysql_num_rows($sql)){ 
    $erg = mysql_fetch_assoc($sql); 
    if($erg['pass'] == md5($_POST['pass'])){ //Das Passwort sollte mindestens mit md5 gehasht sein! 
print ("<meta http-equiv='refresh' content='0; URL=../../test.php' />");        //Session starten etc. 
    } else { 
        echo "Falsches passwort"; 
    } 
} else { 
    echo "Dieser Benutzername existiert nicht in der Datenbank."; 
}
Das funkioniert ja GUT, aber dann wir es ja damit
PHP:
print ("<meta http-equiv='refresh' content='0; URL=../../test.php' />");
auf die seite test.php geleitet, auf dieser seite wird dann entschieden wohin der jenige weitergeleitet wird,
PHP:
<?php
  $qry = '
    SELECT gruppe
    FROM login
  ';
  $sql = mysql_query($qry) OR die(mysql_error());
  while($row = mysql_fetch_assoc($sql)):
  if($row['gruppe'] == 1) 
{ 
    print("<meta http-equiv='refresh' content='0; URL=seite1.php'/>");
} 
else if($row['gruppe'] == 2)  
{ 
print("<meta http-equiv='refresh' content='0; URL=seite2.php' />");
} 
  endwhile;
In der Datenbank ist jeder user einer bestimmten gruppe zugeteilt, wenn jetzt User1 seine Daten stimmen kommt er auf seite 1
PHP:
if($row['gruppe'] == 1) 
{ 
    print("<meta http-equiv='refresh' content='0; URL=seite1.php'/>");
}
Und wenn User2.... auf diese seite
PHP:
else if($row['gruppe'] == 2)  
{ 
print("<meta http-equiv='refresh' content='0; URL=seite2.php' />");
}

Aber egal mit welchen namen ich mich anmelde werde ich immer auf seite 1 geleitet
 
Zuletzt bearbeitet:
PHP:
  while($row = mysql_fetch_assoc($sql))
Brauchst du hier garnicht, du liest ja nur einen Wert aus.

Deine Abfrage ist falsch aufgebaut:
PHP:
  $qry = '
    SELECT gruppe
    FROM login
  ';
Woher soll PHP wissen, aus welchem Datensatz du diese Information haben willst? Daher wird immer der erste genommen.

Machs besser so:
PHP:
$groupsites = array("seite1.php", //Gruppe1
                    "seite2.php", //Gruppe 2
                    "...")        //etc.

$qry = "SELECT
           *
       FROM
           login
       WHERE
           username = '".mysql_real_escape_string($_POST['username'])."'";
$sql = mysql_query($qry) OR die(mysql_error());
if(mysql_num_rows($sql)){
    $erg = mysql_fetch_assoc($sql);
    if($erg['passwort'] == md5($_POST['passwort'])){
        echo "Eingeloggt";
        //Session mit Usernamen unbedingt setzen (fuer spaetere Ueberpruefung)
        header("location: ../../".$groupsites[$erg['gruppe']]);
        exit;
    } else {
        echo "Falsches passwort";
    }
} else {
    echo "Dieser Benutzername existiert nicht in der Datenbank.";
}
 
Schon mal danke, aber ich verstehe diesen aufbau nicht ;)
PHP:
$groupsites = array("seite1.php", //Gruppe1 
                    "seite2.php", //Gruppe 2 
                    "...")        //etc.
Das verstehe ich nicht^^
und
PHP:
header("location: ../../".$groupsites[$erg['gruppe']]); 
        exit;
und das verstehe ich auch nicht :mrgreen:

und was viel wichtiger ist, wieso kommt
Code:
[B]Parse error[/B]: syntax error, unexpected T_VARIABLE in *[B]:check.php[/B] on line [B]184[/B]
der Fehler^^

EDIT:
Code:
der fehler ist weg^^ aber,
 
 
[B]Warning[/B]: mysql_real_escape_string() [[URL="http://localhost/klassenhp/function.mysql-real-escape-string"][COLOR=#0066cc]function.mysql-real-escape-string[/COLOR][/URL]]: Access denied for user 'ODBC'@'localhost' (using password: NO) in [B]D:\xampp\htdocs\test.php[/B] on line [B]11[/B]
 
[B]Warning[/B]: mysql_real_escape_string() [[URL="http://localhost/klassenhp/function.mysql-real-escape-string"][COLOR=#0066cc]function.mysql-real-escape-string[/COLOR][/URL]]: A link to the server could not be established in [B]D:\xampp\htdocs\\test.php[/B] on line [B]11[/B]
 
[B]Warning[/B]: mysql_query() [[URL="http://localhost/klassenhp/function.mysql-query"][COLOR=#0066cc]function.mysql-query[/COLOR][/URL]]: Access denied for user 'ODBC'@'localhost' (using password: NO) in [B]D:\xampp\htdocs\test.php[/B] on line [B]12[/B]
 
[B]Warning[/B]: mysql_query() [[URL="http://localhost/klassenhp/function.mysql-query"][COLOR=#0066cc]function.mysql-query[/COLOR][/URL]]: A link to the server could not be established in [B]D:\xampp\htdocs\test.php[/B] on line [B]12[/B]
Access denied for user 'ODBC'@'localhost' (using password: NO)
da für die da mhm
 
Zuletzt bearbeitet:
1) Damit ordnest du jeder Gruppe eine Seite zu, auf die ein User weitergeleitet wird

User mit der Gruppennummer 0 werden auf die Seite seite1.php weitergeleitet
User mit der Gruppennummer 1 werden auf die Seite seite2.php weitergeleitet

2) [phpnet]header[/phpnet]

3) Falsche Zugangsdaten eingegeben??
 
Jop stimmt^^,

Jetzt erscheint auch der text Eingeloggt:
Aber der Header funktioniert nicht!
Code:
Eingeloggt
[B]Warning[/B]: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\klassenhp\check.php:11) in [B]D:\xampp\htdocs\check.php[/B] on line [B]194[/B]
 
Ups, bloeder Fehler ^^
PHP:
        //Session mit Usernamen unbedingt setzen (fuer spaetere Ueberpruefung)
        header("location: ../../".$groupsites[$erg['gruppe']]);
        echo "Eingeloggt"; //Diese Ausgabe kann man auch ganz weglassen
Das Script musst du dann aber ganz am Anfang deiner Datei haben, bevor man einen header setzt darf keine Ausgabe erfolgt sein!
 
langsam verzeifele ich echd ^^

PHP:
header("location: ../../".$groupsites[$erg['gruppe']]); 
        exit;

Das Script musst du dann aber ganz am Anfang deiner Datei haben, bevor man einen header setzt darf keine Ausgabe erfolgt sein!
Wie darfich das verstehen????

PHP:
header("location: ../../".$groupsites[$erg['gruppe']]); 
        exit;
wenn ich es so mache kommt aber immer noch der gleiche fehler
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben