Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Wieso "no database selected"?

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Wieso "no database selected"?

    Hi @ all,

    ich habe ein Loginsystem auf MySQL-Basis gebastelt, nur beim Login meckert er, dass keine Datenbanl ausgewählt wurde. Warum? Hier der db.php-Code:

    PHP-Code:
    <?
    // Hostname oder IP des MySQL-Servers
    $sqlhost = "localhost";
    // Username und Passwort
    $sqluser = "root";
    $sqlpassword = "-pfeif-";
    // Name der Datenbank
    $sqldb = "wguide";

    // Verbindung herstellen
    mysql_connect($sqlhost,$sqluser,$sqlpassword) or die ("Keine Verbindung möglich");
    mysql_select_db($sqldb) or die ("Die Datenbank existiert nicht");
    ?>
    Der Fehler:
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\www\htdocs\webshowguide\includes\functions.inc. php on line 5
    Die besagte Datei:

    PHP-Code:
    <?php
        
    function exist($abfrage) { // Funktion um Eintrag auf Existenz zu prüfen!

            
    $ergebnis3 mysql_query('SELECT id FROM '.$abfrage/*OR die("Error: $abfrage <br>".mysql_error())*/;
            if (
    mysql_fetch_object($ergebnis3)) {
                return 
    true;
            } else {
                return 
    false;
            }
        }
        function 
    anzahl($abfragez) { // Gibt Anzahl zurück
            
    $ergebnis mysql_query('SELECT COUNT(*) AS anzahl FROM '.$abfragez);
            
    $row mysql_fetch_array($ergebnis);
            return 
    $row['anzahl']; 
        }
        function 
    refresh($user) { // Refresht refresh. Wichtig bei Wer-ist-eingeloggt!
            
    $update mysql_query("UPDATE mitglieder Set refresh = '".time()."' WHERE id = '".$user."'"); 
        }
        function 
    endung($filename) { // Gibt endung der Datei zurück z.B. .gif
            
    $end explode(".",$filename);
            return 
    ".".$end[(count($end)-1)];
        }
        function 
    post($string) { // Macht den String sicher und macht \n in <br>
            
    $string strip_tags($string);
            return 
    str_replace("\n""<br>",$string);;
        }
        function 
    postback($string) { // <br> in \n für textarea
            
    return str_replace("<br>""\n",$string);;
        }
        function 
    zahl($zahl) { // Zahlenschutz wegen Seitenfunktion
            
    $zahl round($zahl,0);
            
    $zahl str_replace("-"""$zahl);
            return 
    $zahl;
        }
    ?>
    die functions.inc.php und die db.php werden jeweils in der login.php includet, zuerst db dann functions.

    Wo liegt hier der Fehler?

    (P.S.: Hab das mysql_error() auskommentiert, damit ihr auch den Fehler seht. Mit mysql_error() kommt "No database selected")
    Visit me at www.gidix.de


  • #2
    Wie rufst du die Funktion exist() auf?
    MfG
    ~Capfly

    Kommentar


    • #3
      Hi.

      Zeig bitte mal deine login.php, wie du die jeweiligen PHP Files includest und was du wie an die Funktion übergibst! Hier taucht ja bei Dir kein Fehler auf wenn du es einbindest, oder?

      PHP-Code:
      <?php
      //...
      mysql_select_db($sqldb) or die ("Die Datenbank existiert nicht"); 
      ?>
      Der Fehler

      Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\www\htdocs\webshowguide\includes\functions.inc. php on line 5
      besagt ja, dass dein SQL Statement nicht in Ordnung ist!

      Wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Zitat von Capfly Beitrag anzeigen
        Wie rufst du die Funktion exist() auf?
        Für den Adminbereich so:

        PHP-Code:
        if(exist("mitglieder WHERE id = '".$_SESSION["login"]."' AND gruppe = 'Admin'")) { // Wenn Admin 
        Dann kommt ja das, was angezeigt werden soll, wenn man Admin ist. Diese Funktion kommt in der memberarea.php vor.

        (Gute Community hier )

        Ich include alle Dateien mit einem switch(), sodass ich in der index.php den Parameter 'page' verwenden kann (also index.php?page=login bspw.)

        login.php:

        PHP-Code:
        <?php
            
        include("db.php");
            include(
        "functions.inc.php");
            if(isset(
        $_REQUEST["submit"])) { // Wenn Formular abgeschickt
                
        if(exist("mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' AND passwort = '".md5($_REQUEST["passwort"])."'") && anzahl("login WHERE ip = '".getenv("REMOTE_ADDR")."' AND erfolgreich = 'nein' AND timestamp > '".(time()-60*30)."'") < 4) { // Wenn Mitglied mit dem Namen und Passwort existiert! und wenn keine falschen logins in den letzten 30 Min. Wieso? um die Seite sicherer zu machen sonst können bruteforcer leicht hacken!
                    
        $eintragen mysql_query("INSERT INTO login (name, ip, timestamp, erfolgreich) VALUES ('".strip_tags($_REQUEST["name"])."', '".getenv("REMOTE_ADDR")."', '".time()."', 'ja')"); // Eintrag in Login!
                    
                    
        $abfrage "SELECT id FROM mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' LIMIT 0,1";
                    
        $ergebnis mysql_query($abfrage);
                    while(
        $row mysql_fetch_object($ergebnis))
                    {
                        
        $_SESSION["login"] = $row->id// Loggt einen ein!
                    
        }
                    echo 
        "<meta http-equiv=\"refresh\" content=\"0; URL=index.php?page=memberarea\">"// Weiterleitung zur Memberarea
                
        } else { // Wenn falsch eingeloggt
                    
        $eintragen mysql_query("INSERT INTO login (name, ip, timestamp, erfolgreich) VALUES ('".strip_tags($_REQUEST["name"])."', '".getenv("REMOTE_ADDR")."', '".time()."', 'nein')"); // Eintrag in Login!
                    
        ?>
                    <h1>Login fehlgeschlagen.</h1>
                    <p>Bitte pr&uuml;fe deine Zugangsdaten oder frage einen <a href="mailto:mail@generate-your-life.de">Administrator</a>
                    um Hilfe.</p>
                    <?php
                
        }
            } else { 
        // Formular ->
                
        ?>
                <h1>Login...</h1>
                <p>Bitte logge dich ein, um alle Funktionen des Mitgliederbereichs nutzen zu k&ouml;nnen. Falls du noch nicht registriert bist, kannst
            du dies <a href="index.php?page=register">hier</a> tun!<br />
            Als Mitglied:</p>
            <ul>
                <li>Hast du ein eigenes Profil mit Avatar!</li>
                <li>Kannst du deine Webshow promoten!</li>
                <li>Kannst du mit anderen Usern schreiben</li>
            </ul>
            <hr />
            <form action=index.php?page=login method=post>
                    <table width=80%>
                        <tr>
                            <td width=50%>
                                <b>Name:</b>
                            </td>
                            <td width=50% align="right">
                                <input type="text" name="name">
                            </td>
                        </tr>
                        <tr>
                            <td width=50%>
                                <b>Passwort:</b>
                            </td>
                            <td width=50% align="right">
                                <input type="password" name="passwort">
                            </td>
                        </tr>
                        <tr>
                            <td align="right" width=100% colspan=2>
                                <input type="submit" class="submit" value="Login" name="submit">
                            </td>
                        </tr>
                    </table>
                </form>
                <?php
            
        }
        ?>
        Visit me at www.gidix.de

        Kommentar


        • #5
          Gehts noch?
          Entscheide dich für 1 Forum!

          Wieso "no database selected"? - homepage-forum.de - Hilfe für Webmaster!
          MfG
          ~Capfly

          Kommentar


          • #6
            Lass Dir bitte mal dein SQL Statement im Klartext in der Funktion ausgeben (also mit echo), dann siehst Du, wie dein SQL Statement aussieht und ob es somit korrekt ist! So ähnlich:

            PHP-Code:

            <?php
            //...
            $sql "'SELECT id FROM ".$abfrage;
            echo 
            $sql;
            ?>
            P.S. Anbei: du solltest evtl. mal SQL Injection im Auge behalten und nicht nur Html und PHP Eingaben mit strip_tags!

            Wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              Zitat von Capfly Beitrag anzeigen
              Da war ich erst, aber ich hab in letzter Zeit schon gemerkt, dass da Antworten raritäten sind.
              Visit me at www.gidix.de

              Kommentar


              • #8
                Dann mach mal das, was wolf29 sagte
                MfG
                ~Capfly

                Kommentar


                • #9
                  Zitat von wolf29 Beitrag anzeigen
                  Lass Dir bitte mal dein SQL Statement im Klartext in der Funktion ausgeben (also mit echo), dann siehst Du, wie dein SQL Statement aussieht und ob es somit korrekt ist! So ähnlich:

                  PHP-Code:

                  <?php
                  //...
                  $sql "'SELECT id FROM ".$abfrage;
                  echo 
                  $sql;
                  ?>
                  Wolf29
                  Nix gebracht. Ich erhalte:

                  'SELECT id FROM '

                  Hab das direkt in der functions.inc.php eingebunden und einen Loginversuch gemacht.
                  Visit me at www.gidix.de

                  Kommentar


                  • #10
                    Zitat von bluefirex Beitrag anzeigen
                    Nix gebracht.
                    Was soll das heissen?

                    Natürlich hat das was gebracht:
                    Ich erhalte:

                    'SELECT id FROM '
                    Na also, damit ist doch wohl glasklar, warum das Statement fehlerhaft ist!

                    Also finde heraus, warum $abfrage keinen sinnvollen Wert enthält.

                    Kommentar


                    • #11
                      Ahhh...mein Fehler. Ist ja ne Funktion. Musst du z.B. mit return zurückgeben und ausgeben, sorry!

                      Wolf29
                      while (!asleep()) sheep++;

                      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                      Kommentar


                      • #12
                        Zitat von ChrisB Beitrag anzeigen
                        Was soll das heissen?

                        Natürlich hat das was gebracht:

                        Na also, damit ist doch wohl glasklar, warum das Statement fehlerhaft ist!

                        Also finde heraus, warum $abfrage keinen sinnvollen Wert enthält.
                        Normalerweise sollte $abfrage das hier enthalten:

                        PHP-Code:
                        $abfrage "SELECT id FROM mitglieder WHERE name = '".strip_tags($_REQUEST["name"])."' LIMIT 0,1"
                        Visit me at www.gidix.de

                        Kommentar


                        • #13
                          Schon mal $abfrage ausgeben lassen?

                          Wolf29
                          while (!asleep()) sheep++;

                          Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                          Kommentar


                          • #14
                            Zitat von wolf29 Beitrag anzeigen
                            Schon mal $abfrage ausgeben lassen?

                            Wolf29
                            Funktioniert nicht. Egal, wo ich es platziere, auch ob mit die() dahinter oder nicht.

                            Wo söllte ich es denn in der login.php platzieren (Quelltext siehe in einem meiner vorherigen Posts)
                            Visit me at www.gidix.de

                            Kommentar


                            • #15
                              Mit echo $abfrage; -.-
                              MfG
                              ~Capfly

                              Kommentar

                              Lädt...
                              X