Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage wegen Ajax und Abfragen - MySQL

Einklappen

Neue Werbung 2019

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

  • Frage wegen Ajax und Abfragen - MySQL

    Hallo liebe Community,

    Ich habe eine Frage... Wie kann ich die ganzen Abfragen sicher gestalten? Mein Code sieht noch so aus:
    PHP-Code:
    <script>
            
    // Enable bootstrap tooltips
            
    $(function ()
                { $(
    "[rel=tooltip]").tooltip();
                }); 
            
    // Auto refresh things
            
    (function($)
            {
                $(
    document).ready(function()
                {
                    $.
    ajaxSetup(
                    {
                        
    cachefalse,
                        
    beforeSend: function() {
                            $(
    '#data1').show();
                            $(
    '#data2').show();
                        },
                        
    complete: function() {
                            $(
    '#data1').show();
                            $(
    '#data2').show();
                        },
                        
    success: function() {
                            $(
    '#data1').show();
                            $(
    '#data2').show();
                        }
                    });
                    var 
    $messagelist_mysql = $("#data1");
                    var 
    $messagelist_count = $("#data2");

                    
    $messagelist_mysql.load("getdata.php");
                    
    $messagelist_count.load("getdata1.php");
                    var 
    refreshId setInterval(function()
                    {
                        
    $messagelist_mysql.load('getdata.php');
                        
    $messagelist_count.load("getdata1.php");
                    }, 
    1000); //(1sec)
                
    });
            })(
    jQuery);
            
            
    </script> 
    Folgende Daten stehen in getdata.php und getdata1.php
    getdata.php
    PHP-Code:
    <?php
    include_once 'dbsettings.php';

    if (
    mysqli_connect_errno())
    {
    echo 
    "Failed to connect to MySQL: " mysqli_connect_error();
    }
    $result mysqli_query($con,"SELECT * FROM news");

    while(
    $row mysqli_fetch_array($result))
    {
    echo 
    "<li><a href='#'><span class='icon blue'><i class='icon-user'></i></span>";
    echo 
    "<span class='message'>" $row['message'] . "</span>";
    echo 
    "<span class='time'>" $row['date'] . "</span>";
    echo 
    "</a></li>";
    }
    ?>
    getdata1.php
    PHP-Code:
    <?php
    include_once 'dbsettings.php';


    $result=mysqli_query($con,"SELECT count(*) as total from news");
    $data=mysqli_fetch_assoc($result);
    echo 
    $data['total'];
    ?>
    Die Frage ist jetzt wie kann ich nur mit einer Abfrage alle diese Daten bekommen ohne das wenn zb ein User auf [URL]/getdata.php gehen kann und gleich die Daten sehen kann? Also via Post oder so....

    Es ist schon viel an Daten die noch geladen werden müssen und für das jedes ein eigenes Ajax Befehl? das wird dann zu viel Code

    Gibt es da was anderes?


  • #2
    Willkommen im Forum.

    Es gibt etwa jQuery.ajax() (allgemein für alles) und jQuery.post() (spezialisierte Teilfunktion). Damit kannst du auch POST-Requests durchführen.

    - http://api.jquery.com/jquery.ajax/
    - http://api.jquery.com/jQuery.post/

    Du kannst beide Informationen (HTML-Code und Anzahl) auch in einem Datenpaket zurückliefern, wenn du statt HTML etwa ein kleines JSON-Objekt mit den Feldern html und count zurückgeben lässt. Das Setting dafür in den verlinkten jQuery-Funktionen ist dataType. Es dürften dort auch Beispiele dafür zu finden sein.

    Auf PHP-Seite brauchst du json_encode und ein Array oder dergleichen.

    - http://php.net/manual/en/function.json-encode.php

    PS: Vorsichtshalber gesagt: Auch ein POST-Request lässt sich recht einfach faken. Das ist also keine „Sicherheit“ in dem Sinne. Das ist nur, dass eben nicht mehr die URL-Eingabe im Browser ausreicht, um die Rohdaten zu sehen. Ob das auf die Weise sinnvoll ist, musst du entscheiden.

    Kommentar


    • #3
      PHP-Code:
      $messagelist_mysql.load("getdata.php");
      $messagelist_count.load("getdata1.php");
      var 
      refreshId setInterval(function()
      {
          
      $messagelist_mysql.load('getdata.php');
          
      $messagelist_count.load("getdata1.php");
      }, 
      1000); //(1sec) 
      => http://zetafleet.com/blog/why-i-cons...terval-harmful

      Mit der Frequenz nachladen ist Unsinn. Verzeih mir den Ton, aber sowas begegnet mir zum x-millionsten Mal und das machts nicht besser. Am besten einen Socket verwenden, alternativ long polling. HEAD-Request => Status abfragen wäre zumindest ein Anfang.
      I like cooking my family and my pets.
      Use commas. Don't be a psycho.
      Blog - CoverflowJS

      Kommentar


      • #4
        Ja ich mache es mal mit PDO und Klassen Namen.... mal schauen wie das gehen wird. Zusätzlich werde ich noch die Verzeichnisse schützen mit einem PW...

        Danke für eure Hilfe aber mit den Klassen bekomme ich noch weniger Code und das mit der Live neuladung ist mir noch zu schwer. Lieber sicher als unsicheren Code zu schreiben

        Kommentar

        Lädt...
        X