.htacces übergabe und SQL statement

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • .htacces übergabe und SQL statement

    hi leute!

    ich habe gleich zwei probleme:

    1. ist es möglich, einen ordner mittels .htaccess zu schützen und bei einer erfolgreichen authentifizierung den benutzernamen an eine php-datei weiterzuleiten? ich habe bisher so gut wie keine infos diesbezüglich gefunden...

    2. habe ich ein gästebuch programmiert - eintragen und anzeigen lassen etc. funktioniert, nur möchte ich, dass die anzeige zuerst nach datum sortiert und dann dass jeweilige datum nach uhrzeit (beides absteigend, sprich die aktuellsten einträge zuerst)
    ich hab das mit einem self-join probiert, aber dabei krieg ich mehrfach den selben eintrag heraus. mein statement schaut im moment so aus:

    SELECT a.name, a.datum, a.zeit, a.nachricht FROM gaestebuch a, gaestebuch b WHERE a.zeit > b.zeit ORDER BY a.datum ASC

    was läuft denn da falsch?

    lg
    gmalta

  • #2
    1.:
    PHP-Code:
    <?php
      
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        
    header('WWW-Authenticate: Basic realm="SecZone"');
        
    header('HTTP/1.0 401 Unauthorized');
        echo 
    'Sorry, kein Zugang ohne Authentifizierung!';
        exit;
      } else
        echo 
    $_SERVER['PHP_AUTH_USER'].'<br>'.$_SERVER['PHP_AUTH_PW'];
    ?>
    Alles klar?

    2.: ... ORDER BY a.datum, a.zeit?

    Kommentar


    • #3
      danke für den teil mit der htaccess...

      das statement schaut bei mir jetzt so aus:
      SELECT DISTINCT a.name, a.datum, a.zeit, a.nachricht FROM gaestebuch a, gaestebuch b WHERE a.zeit > b.zeit ORDER BY a.datum DESC, a.zeit DESC
      und funzt genauso, wie ichs haben will....danke nochmals

      Kommentar


      • #4
        noch eine frage:

        lokal geht das skript, wie oben beschrieben, aber online nicht...

        bei meinem provider läuft "MySQL 4.0.24-standard" und "PHP Version 4.3.11" - geht das dort nicht auf grund der versionen, oder was ist los?

        lg
        gmalta

        p.s. wenn ich den befehl im phpmyadmin ausführe, bekomme ich zwar keine fehlermeldung, aber auch keine daten aus der DB, die aber daten enthält

        Kommentar


        • #5
          "online nicht" ist keine sehr aussagekräftige Fehlerbeschreibung.
          An der WHERE-Klausel liegt es aber nicht, oder?

          Kommentar


          • #6
            PHP-Code:
            $_SERVER['PHP_AUTH_USER'
            funktioniert nur, wenn php als modul läuft und nicht als cgi.

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              naja, online bedeutet, am server meines providers, weil lokal läuft alles mit xampp...

              glaub nicht, dass es was mit der where-klausel hat, weil lokal funzt alles, deswegen vemrute ich ein problem mit den versionen von mysql bzw. php (im phpmyadmin von meinen provider gibts keine fehlermeldung, wenn ich nur das sql-statement ausführen lasse)

              lg
              gmalta

              Kommentar


              • #8
                @Kropff: Berechtigter Einwand, aber das scheint bei ihm ja zu funktionieren.

                Hast du die Query in deinem Code, hast du das Script aufgerufen, hat es eine Fehlermeldung gegeben, prüfst du die Anzahl der Datensätze mit mysql_num_rows()?
                An MySQL liegt es wohl kaum, die Query sollte mit allen Versionen funktionieren.

                Kommentar


                • #9
                  hi!

                  ich bekomm absolut keine fehlermeldung....das skript läuft ohne fehler durch, die anzeige kommt auch, aber halt nicht mit den daten aus der DB

                  lg
                  gmalta

                  Kommentar


                  • #10
                    hi leute!

                    bin zwar ein newbie, bin aber selber draufgekommen, was das prob war *stolzbin*.....

                    der erste fehler war, dass in der Db online nur 1 datensatz war - da ich aber mittels a.zeit > b.zeit mindestens zwei datensätz erforderte, gabs da ein prob...nun wird mittels

                    if ( mysql_num_rows ( mysql_db_query ("DB_NAME", "SELECT * FROM gaestebuch) ) == 1)
                    {
                    $sql = "SELECT name, datum, zeit, nachricht, email FROM gaestebuch ORDER BY datum DESC";
                    }
                    else
                    {
                    §sql = "SELECT DISTINCT a.name, a.datum, a.zeit, a.nachricht FROM gaestebuch a, gaestebuch b WHERE a.zeit > b.zeit ORDER BY a.datum DESC, a.zeit DESC"
                    }


                    im else-zweig seht ihr den zweiten fehler - ich habe mittels "WHERE a.zeit > b.zeit" den ältesten beitrag weggelassen - drum gabs ein prob mit nur zwei datensätzen....

                    mittlerweile schaut das ganze so aus:
                    SELECT DISTINCT a.name, a.datum, a.zeit, a.nachricht FROM gaestebuch a, gaestebuch b WHERE a.zeit > b.zeit ORDER BY a.datum DESC, a.zeit DESC" und alles läuft einwandfrei, so wie es soll.....

                    trotzdem danke an alle, die mir irgendwie helfen wollten....
                    lg
                    gmalta

                    Kommentar


                    • #11
                      ich frage mich noch, warum du immer zwei abfragen machen willst?

                      und ich frage mich, warum du datum und zeit in getrennte felder ablegst und nicht DATETIME oder TIMESTAMP als feldtyp zu verwendest?
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        so...und eben ist mir aufgefallen, dass das a.name etc auch hinfällig ist, wenn sowieso nur eine DB abgefragt wird.....

                        damit ich ein bißchen "angeben" kann und ihr mir vielleicht ein paar verbesserungsvorschläge liefern könnt, hier das gesamte script:

                        PHP-Code:
                        <?PHP
                            
                            
                        require ("../php/connect.php");
                            include (
                        "../php/datum.php");
                            
                            if (
                        $_GET[type] == "entered")
                            {
                                if (!
                        $HTTP_POST_VARS[name] || !$HTTP_POST_VARS
                        [email] || !$HTTP_POST_VARS[nachricht])
                                {
                                    
                        $stop 1;
                                    echo 
                        "<p align=\"center\">Leider haben Sie vergessen, einige Daten 
                        einzugeben.</p>
                                            <p align=\"center\">Klicken Sie bitte in Ihrem Browser auf 

                        &quot;Zur&uuml;ck&quot; 
                        oder verwenden Sie<br>
                                            <a href=\"javascript:history.back()\">folgenden Link</a> und kontrollieren 

                        Ihre Eingabe erneut!</p>"
                        ;
                                }
                                else
                                {
                                    
                        $datum date ("Y-m-d");
                                    
                        $zeit date ("H:i:s");
                                    
                        $IP $_SERVER[REMOTE_ADDR];
                                    
                        $nachricht nl2br ($HTTP_POST_VARS[nachricht]);
                                    
                                    
                        $sql "INSERT INTO gaestebuch (name, email, datum, zeit, nachricht, IP)
                                            VALUES
                                            ('
                        $HTTP_POST_VARS[name]', '$HTTP_POST_VARS[email]', '$datum', '$zeit',
                         '
                        $nachricht', '$IP')";
                                            
                                    
                        mysql_db_query ("DB_NAME"$sql);
                                }        
                            }

                        ?>

                        <html>
                        <head>
                        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                        <title>Unbenanntes Dokument</title>
                        <link href="../css/main.css" rel="stylesheet" type="text/css">
                        </head>

                        <body>

                        <?PHP
                            
                            
                        if ( ($_GET[type] == "do_enter") )
                            {
                                echo 
                        "
                                       <form name=\"form1\" method=\"POST\" action=\""
                        .$PHP_SELF."?type=entered\">
                                          <table width=\"50%\"  border=\"1\" align=\"center\">
                                            <tr>
                                              <td width=\"27%\">Name:</td>
                                              <td width=\"73%\"><input name=\"name\" type=\"text\" id=\"name\" size=\"50\" 

                        maxlength=\"255\"></td>
                                            </tr>
                                            <tr>
                                              <td>E-Mail:</td>
                                              <td><input name=\"email\" type=\"text\" id=\"email\" size=\"50\"
                         maxlength=\"255\">
                        </td>
                                            </tr>
                                            <tr>
                                              <td>Nachricht:</td>
                                              <td><textarea name=\"nachricht\" cols=\"45\" rows=\"7\" id=\"nachricht\">
                        </textarea></td>
                                            </tr>
                                          </table>
                                          <p align=\"center\">Alle Felder sind Pflichtfelder und müssen 
                        ausgefüllt werden!!</p>
                                          <table width=\"50%\"  border=\"1\" align=\"center\">
                                            <tr>
                                              <td><div align=\"center\">
                                                <input type=\"submit\" name=\"Submit\" value=\"Eintrag machen\">
                                        </div></td>
                                              <td><div align=\"center\">
                                                <input type=\"reset\" name=\"Submit\" value=\"Maske l&ouml;schen\">
                                              </div></td>
                                            </tr>
                                          </table>
                                          </form>"
                        ;
                            }
                            else if (
                        $stop != 1)
                            {
                                echo 
                        "<div align=\"center\"><a href=\"".$PHP_SELF."?type=do_enter\">Eigenen 
                        Gästebucheintrag schreiben</a><div><br><br>"
                        ;
                                
                                if ( 
                        mysql_num_rows mysql_db_query ("DB_NAME""SELECT * FROM gaestebuch") ) == "1")
                                {
                                    
                        $sql "SELECT name, datum, zeit, nachricht, email FROM gaestebuch ORDER BY 
                        datum DESC"
                        ;
                                }
                                else
                                {
                                    
                        $sql "SELECT DISTINCT name, datum, zeit, nachricht, email FROM gaestebuch ORDER BY 
                        datum DESC, zeit DESC"
                        ;
                                }

                                
                        $result mysql_db_query ("DB_NAME"$sql) or die (mysql_error());
                                
                                for(
                        $i 0$i mysql_num_rows ($result); $i++)
                                {
                                    
                        $ergebnis[$i] = mysql_fetch_array ($result);
                                }
                                
                                for (
                        $i 0$i count ($ergebnis); $i++)
                                {        
                                    echo 
                        "
                                            <table width=\"75%\"  border=\"1\" align=\"center\" bordercolor=\"#000000\">
                                              <tr>
                                                <td width=\"14%\" bgcolor=\"#0066FF\">Name:</td>
                                                <td width=\"48%\">"
                        .$ergebnis[$i][name]."</td>
                                                <td width=\"12%\" bgcolor=\"#0066FF\">Datum:</td>
                                                <td width=\"26%\">"
                        .datum($ergebnis[$i][datum])."</td>
                                              </tr>
                                              <tr>
                                                <td bgcolor=\"#0066FF\">E-Mail:</td>
                                                <td><a href=\"mailto:"
                        .$ergebnis[$i][email]."\">"
                        .$ergebnis[$i][email]."</a></td>
                                                <td bgcolor=\"#0066FF\">Zeit:</td>
                                                <td>"
                        .$ergebnis[$i][zeit]."</td>
                                              </tr>
                                              <tr>
                                                <td bgcolor=\"#0066FF\">Nachricht:</td>
                                                <td colspan=\"3\">&nbsp;</td>
                                              </tr>
                                              <tr>
                                                <td colspan=\"4\">"
                        .$ergebnis[$i][nachricht]."</td>
                                              </tr>
                                            </table>
                                            <div align=\"center\"><br>
                                              <hr width=\"75%\" size=\"5\">
                                              <br>"
                        ;
                                }
                                echo 
                        "<div align=\"center\"><a href=\"".$PHP_SELF."?type=do_enter\">Eigenen 
                        Gästebucheintrag schreiben</a><div>"
                        ;
                            }

                        ?>

                        </body>
                        </html>
                        Zuletzt geändert von gmalta; 07.01.2006, 10:54.

                        Kommentar


                        • #13
                          brich deinen code um!
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            ähm wie bitte?

                            lg

                            Kommentar


                            • #15
                              http://www.php-resource.de/forum/sho...threadid=50454
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X