mysql_fetch_object enthält kein Ergebnis

  • mysql_fetch_object enthält kein Ergebnis

    Ich habe folgendes Problem:

    Quellcode

    1. <?
    2. include 'connect.php';
    3. if(isset($_GET['username']))
    4. {
    5. $res = mysql_query("SELECT COUNT(`username`) FROM `user` WHERE `username` = '".$_GET['username']."' AND `passwort` = '". $_GET['passwort'] ."'");
    6. $row = mysql_fetch_object($res);
    7. if($row[0] == 1) {
    8. echo('login OK');
    9. } else {
    10. die('Ein Fehler ist aufgetreten!');
    11. }
    12. }
    13. //... Formularfeld ...
    Alles anzeigen

    Ich erhalte immer die Fehlermeldung "Ein Fehler ist aufgetreten!". Die $row-abfrage scheint also falsch zu sein, obwohl alle Vaiablen ordnungsmeäß übergeben werden. Die Datenbank wird auch abgefragt. Aber es scheint so als ob kein gültiger Count-Wert zurückgegeben wird. In einer einfachen SQL-Abfrage klappt das. Nur mit dem Script hier nicht.
  • Woher kommen die `Zeichen her? Lass die mal weg :)

    Und ich mache es nicht mit mysql_fetch_object sondern mit mysql_fetch_row, das ist aber jeden slebst überlassen.

    Quellcode

    1. <?
    2. include ("connect.php");
    3. if(isset($_GET['username']))
    4. {
    5. $res = mysql_query("SELECT COUNT(username) FROM user WHERE username='".$_GET['username']."' AND passwort='". $_GET['passwort'] ."'");
    6. list($anzahl) = mysql_fetch_row($res);
    7. if(anzahl == "1") {
    8. echo('login OK');
    9. } else {
    10. die('Ein Fehler ist aufgetreten!');
    11. }
    12. }
    Alles anzeigen
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Was ich mir auch überlegt habe, warum übergibst du Passwort und Benutzername via GET? Ich würde das via POST machen... und was d0nUt schon sagte auch...
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Danke für die Antworten.

    Mit "mysql_fetch_row" anstatt "mysql_fetch_object" hats geklappt, wobei ich nicht weiß warum. Hätte ja auch vorher gehen müssen, oder? Was ist denn der Unterschied zwischen "mysql_fetch_row" und "mysql_fetch_object". Also zumindest in diesem Fall. Es wird ein Objekt und gleichzeitg einen Zeile zurückgegeben. Na ja man merkt bin noch ein Laie. Aber jetzt funkts ja.

    Den Rat von dOnUt habe ich befolgt und eingesetzt. mysql_real_escape_string ist eingefügt. So hat meine Datenbank jetzt zumindest keine Interpretationsschwierieiten mehr. Danke dafür. :D

    Das mit dem $_GET und $_POST ist folgendermaßen. Ich übersenden mit dem POST zwar die beiden Variablen "username" und "passwort", aber ich brauche auch noch andere Variablen aus dem Formular (z.B. $lang). Die habe ich mittels hidden-field eingesetzt. Aber mit Post werden die nicht mitübergeben.

    Ich würde auch lieber Post nehmen. Wenn jemand weiß wie das geht, dann her mit den Antworten.
  • "mycros" schrieb:

    Mit "mysql_fetch_row" anstatt "mysql_fetch_object" hats geklappt, wobei ich nicht weiß warum. Hätte ja auch vorher gehen müssen, oder?

    Nein, das fetch_object liefert ein Objekt - kein Array. Zugriff nur mit ob->var.
    Wenn du dir mal unsicher bist, was so im Objekt drin ist: Mit print_r($arr) gibst du arrays aus, mit var_dump($ob) das Objekt.

    "mycros" schrieb:

    Die habe ich mittels hidden-field eingesetzt. Aber mit Post werden die nicht mitübergeben.

    Quellcode

    1. echo '<input type="hidden" name="user" value="'.$var'" />';


    Gib uns mal deinen Quelltext, wird kein großes Problem sein.
  • richtig man kann auch hidden-felder via post übergeben du kannst es dann ganz normal mit $_POST abrufen wie d0nUt schon geschrieben hat. Nur würde ich alles versuchen um zu verhindern das man Benutzername und PW via GET zu übergeben muss. Was ich auch noch machen würde wo wir gerade beim thema sicherheit sind ist http://de.php.net/manual/de/function.htmlspecialchars.php htmlspecialchar(), somit kannst du unterbinden das jemand unerlaubten Code in deine Inputfelder klatscht.

    so long
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Hier mein Code (auszug):

    Quellcode

    1. <?
    2. if(isset($_POST['username']))
    3. {
    4. $res = mysql_query("SELECT COUNT(username) FROM gvs_user WHERE username = '".mysql_real_escape_string($_POST['username'])."' AND passwort = '".mysql_real_escape_string($_POST['passwort'])."'");
    5. $row = mysql_fetch_row($res);
    6. if($row[0] == 1) {
    7. echo('login OK');
    8. } else {
    9. $fehlercode = $fehler_100;
    10. include ("templates/login.html");
    11. include ("footer.php");
    12. }
    13. }
    14. ?>
    Alles anzeigen

    ... normalen html-code dazwischen ...

    Quellcode

    1. <form method="post" action="<?= $_SERVER['PHP_SELF']; ?>">
    2. <p><strong><font color="<? echo $pg_headline_color; ?>"><? echo $fehler_100; ?><? echo $fehlercode; ?></font></strong></p>
    3. <table>
    4. <tr>
    5. <td>Benutzer:</td>
    6. <td><input name="username" type="text" id="username" /></td>
    7. </tr>
    8. <tr>
    9. <td>Passwort:</td>
    10. <td><input name="passwort" type="password" id="passwort" /></td>
    11. </tr>
    12. <tr>
    13. <td>&nbsp;</td>
    14. <td><input type="submit" value="Anmelden" /></td>
    15. </tr>
    16. </table>
    17. <input name="user" type="hidden" id="user" value="<? echo $user; ?>" />
    18. <input name="pass" type="hidden" id="pass" value="<? echo $pass; ?>" />
    19. <input name="ref" type="hidden" id="ref" value="<? echo $ref; ?>" />
    20. <input name="lang" type="hidden" id="lang" value="<? echo $lang; ?>" />
    21. </form>
    Alles anzeigen


    ... normalen html-code dzu schluss ...


    Die hidden-fields werden nicht via post übergeben. username und passwort schon.
  • Die Werte werden nicht befüllt. Das erkenne ich daran, dass ein interner Includeaufruf nicht funktioniert.

    Es erscheint folgende Fehlermeldung:

    Warning: main(includes//inc_login.php): failed to open stream: No such file or directory in /srv/www/vhosts/mycros.de/subdomains/root/httpdocs/paid/login.php on line 3

    In Line 3 steht folgendes: include ('includes/'.$lang.'/inc_login.php');

    Im Normalfall, also mit $_get wird die Variable übergeben. Mit $_POST nicht. Das in der Fehlermeldung die Varaibale fehlt gehe ich von aus, dass via $_post nichts übergeben wird.

    Das ist der Quelltext:

    Quellcode

    1. <table width="100%" align="center"><tr><td><br />
    2. <b>Warning</b>: main(includes//inc_login.php): failed to open stream: No such file or directory in <b>/srv/www/vhosts/mycros.de/subdomains/root/httpdocs/paid/login.php</b> on line <b>3</b><br />
    3. <br />
    4. <b>Warning</b>: main(): Failed opening 'includes//inc_login.php' for inclusion (include_path='.:/usr/share/php') in <b>/srv/www/vhosts/mycros.de/subdomains/root/httpdocs/paid/login.php</b> on line <b>3</b><br />
    5. </td>
    6. <td width="600" align="center" valign="top"><table width="100%" border="0" align="right" cellpadding="0" cellspacing="3" style="border:#006699 solid; border-width:3px; border-spacing:0; border-collapse: collapse;">
    7. <tr>
    8. <td bgcolor="#006699">
    9. <div align="center"><strong><font color="#FFFFFF"></font></strong></div></td>
    10. </tr>
    11. <tr>
    12. <td>
    13. <form method="post" action="/paid/login.php">
    14. <p><strong><font color="#FFFFFF"></font></strong>
    15. <input name="user" type="hidden" id="user" value="" />
    16. <input name="pass" type="hidden" id="pass" value="" />
    17. <input name="ref" type="hidden" id="ref" value="" />
    18. <input name="lang" type="hidden" id="lang" value="" />
    19. </p>
    20. <table>
    21. <tr>
    22. <td>Benutzer:</td>
    23. <td><input name="username" type="text" id="username" /></td>
    24. </tr>
    25. <tr>
    26. <td>Passwort:</td>
    27. <td><input name="passwort" type="password" id="passwort" /></td>
    28. </tr>
    29. <tr>
    30. <td>&nbsp;</td>
    31. <td><input type="submit" value="Anmelden" /></td>
    32. </tr>
    33. </table>
    34. </form> </td>
    35. </tr>
    36. </table></td>
    37. </tr>
    38. </table>
    Alles anzeigen
  • Ich habe endlich ein Lösung gefunden. ich habe als if-Anweisung zum Anfang geprüft, ob bereits eine Variable $lang existiert. Wenn ich den Link ohne Variablen aufrufe (also nur login.php) prüfe ich über die Brwosereinstellung, welche Sprache die Standardsprache ist, dann üerbgebe ich diese per post. Und es funktioniert.

    Endlich. Danke für eure Geduld hier.

    Hier die Lösung:
    file: sprache.php

    Quellcode

    1. <?php
    2. // Browsersprache ermitteln
    3. function lang_getfrombrowser ($allowed_languages, $default_language, $lang_variable = null, $strict_mode = true) {
    4. // $_SERVER['HTTP_ACCEPT_LANGUAGE'] verwenden, wenn keine Sprachvariable mitgegeben wurde
    5. if ($lang_variable === null) {
    6. $lang_variable = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    7. }
    8. // wurde irgendwelche Information mitgeschickt?
    9. if (empty($lang_variable)) {
    10. // Nein? => Standardsprache zurückgeben
    11. return $default_language;
    12. }
    13. // Den Header auftrennen
    14. $accepted_languages = preg_split('/,\s*/', $lang_variable);
    15. // Die Standardwerte einstellen
    16. $current_lang = $default_language;
    17. $current_q = 0;
    18. // Nun alle mitgegebenen Sprachen abarbeiten
    19. foreach ($accepted_languages as $accepted_language) {
    20. // Alle Infos über diese Sprache rausholen
    21. $res = preg_match ('/^([a-z]{1,8}(?:-[a-z]{1,8})*)'.
    22. '(?:;\s*q=(0(?:\.[0-9]{1,3})?|1(?:\.0{1,3})?))?$/i', $accepted_language, $matches);
    23. // war die Syntax gültig?
    24. if (!$res) {
    25. // Nein? Dann ignorieren
    26. continue;
    27. }
    28. // Sprachcode holen und dann sofort in die Einzelteile trennen
    29. $lang_code = explode ('-', $matches[1]);
    30. // Wurde eine Qualität mitgegeben?
    31. if (isset($matches[2])) {
    32. // die Qualität benutzen
    33. $lang_quality = (float)$matches[2];
    34. } else {
    35. // Kompabilitätsmodus: Qualität 1 annehmen
    36. $lang_quality = 1.0;
    37. }
    38. // Bis der Sprachcode leer ist...
    39. while (count ($lang_code)) {
    40. // mal sehen, ob der Sprachcode angeboten wird
    41. if (in_array (strtolower (join ('-', $lang_code)), $allowed_languages)) {
    42. // Qualität anschauen
    43. if ($lang_quality > $current_q) {
    44. // diese Sprache verwenden
    45. $current_lang = strtolower (join ('-', $lang_code));
    46. $current_q = $lang_quality;
    47. // Hier die innere while-Schleife verlassen
    48. break;
    49. }
    50. }
    51. // Wenn wir im strengen Modus sind, die Sprache nicht versuchen zu minimalisieren
    52. if ($strict_mode) {
    53. // innere While-Schleife aufbrechen
    54. break;
    55. }
    56. // den rechtesten Teil des Sprachcodes abschneiden
    57. array_pop ($lang_code);
    58. }
    59. }
    60. // die gefundene Sprache zurückgeben
    61. return $current_lang;
    62. }
    63. ?>
    Alles anzeigen


    in file: login.php einfügen

    Quellcode

    1. <?php
    2. include_once ('sprache.php');
    3. $allowed_langs = array ('en','de');
    4. $lang = lang_getfrombrowser ($allowed_langs, 'de', null, false);
    5. ?>


    Dadurch, dass jetzt die Variable $lang verarbeitet werden kann, funktionieren auch die includes aus den externen Dateien. Und alles funkt. Auch mit $_post.

    Danke nochmal.
  • nike air max outlet

    clarks shoes

    fendi handbags

    dallas cowboys jerseys

    fit flops

    sac longchamp pas cher

    parada handbags

    polo ralph lauren outlet online

    chicago bulls jerseys

    polo outlet

    salomon shoes

    yeezy boost 350

    nike store

    adidas superstar

    nike free 5.0

    detroit tigers jerseys

    supra shoes

    jimmy choo

    san antonios purs jerseys

    cheap jordans

    coach outlet

    green bay packers jerseys

    fitflops sale clearance

    swarovski crystal

    cheap jordans

    beats headphones

    new york yankees jerseys

    mbt shoes

    nmd adidas

    air max 95

    adidas outlet

    chi flat iron

    cheap jordan shoes

    longchamp handbags

    dolce and gabbana outlet

    giuseppe zanotti outlet

    kevin durant shoes

    san francisco giants jerseys

    vans shoes

    adidas yeezy

    sac longchamp pas cher

    sac longchamp pliage

    valentino

    longchamp outlet

    fitflops

    true religion outlet

    longchamp outlet

    michael kors uk

    wholesale nike shoes

    coach factory outlet online

    kd 9 shoes

    michael kors outlet

    st louis cardinals jerseys

    coach outlet online

    air max

    ghd straighteners

    hermes outlet

    clarks outlet

    jimmy choo

    true religion jeans

    beats by dr dre

    nike air max

    ralph lauren outlet online

    hollister clothing store

    michael kors bags

    chicago white sox jerseys

    coach outlet online

    adidas uk

    versace shoes

    yeezy boost 350

    rolex replica watches

    red bottoms

    gucci purses

    oklahoma city thunder jerseys

    denver broncos jerseys

    cheap nike air max

    coach factory outlet

    pandora bijoux

    columbia outlet online

    michael kors uk

    christian louboutin outlet

    louboutin

    mont blanc

    tiffany outlet

    tory burch outlet

    fitflops

    ralph lauren

    air max 2017

    dansko sandals

    louboutin pas cher

    nike shoes outlet

    cat shoes

    official coach factory outlet

    gucci outlet

    columbia shoes

    true religion jeans

    los angeles dodgers jerseys

    gucci handbags

    chicago cubs jerseys
    170823yueqin