tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
NEIN
ANTWORTEN
24
ZUGRIFFE
745
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Wambo Wambo ist offline Mitglied Silber
    Registriert seit
    Jul 2006
    Beiträge
    86
    PHP-Code:
    <?php
                $host
    ="localhost";
                
    $username="******";
                
    $passwort="";
                
    $dbname="********";
        
            
    $connect mysql_connect($host$username$passwort);
            include(
    "/Connections/TEST.php");
            
    mysql_select_db($db_name);

            
            
    $res =       "SELECT `ID` 
                            
                            FROM `News` 
                            
                            ORDER BY `ID` DESC
                            "
    ;
            
            
    $del "DELETE FROM
             `News` WHERE `id`='"
    .$_POST['id']."'"
             
    ;
            
            
    $delall =     "
                            DELETE    `NEWS`
                                 FROM     `NEWS`
                                 "
    ;
                                 
            
    $change "        UPDATE
                            `News`
                        SET
                            WHERE
                            [B]`ID` = '"
    $_POST['ID']'"";[/B]
        
            $add = "    INSERT INTO `News`
                    `News`
                        VALUES
                            '"
    $_POST['ID']'"";
                                 
        //if bedingungen 
        if(
    $_POST['delete'])
        {
        mysql_query(
    $del$connect)  OR die(mysql_error())
            echo "
    Der Datensatz mit der ID <strong>$_POST['ID']</strongwurde gelöscht."
        ;}
        
        if(
    $_POST['deleteall'])
        {
            mysql_query(
    $delall$connect)  OR die(mysql_error())
        echo "
    Alle Datensätze wurden gelöscht!"
        ;}
        if(
    $_POST['change'])
        {
        mysql_query(
    $change$connect)  OR die(mysql_error())
        echo "
    Der Datensatz mit der ID $_POST['ID'wurde geändert."
        ;}
        if(
    $_POST['add'])
        {
            mysql_query(
    $add$connect)  OR die(mysql_error())
        echo "
    Der Datensatz wurde hizugefügt."

        ?>
    Der Fehler wird in der fettgedruckten Line angezeigt.
     

  2. #17
    phaeton phaeton ist offline Grünschnabel
    Registriert seit
    Aug 2003
    Ort
    Chemnitz
    Beiträge
    4
    wie wäre es denn, in deinen change query nach SET anzugeben, welche spalte er mit welchem wert ändern soll?!

    Code :
    1
    
    $change = "UPDATE news SET spalte = 'inhalt'  WHERE id = '"$_POST['ID']'"";
     

  3. #18
    Avatar von Sir Robin
    Sir Robin Sir Robin ist offline Mitglied Brokat
    Registriert seit
    Feb 2002
    Ort
    Berlin
    Beiträge
    431
    Huhu,

    nur kurzer Zusatz:

    Da sich das ganze um einen String handelt und man durch die anfänglichen " schon die Anführungszeichen hat, reicht ein simples $_POST[id] ohne sonderliche Anführungszeichen. Also:

    PHP-Code:
    <?php

    $string 
    "DELETE FROM tabelle WHERE id = $_POST[id]";

    ?>
    schöner Code ist das natürlich nicht, weswegen ich empfehle mal in die Funktionen printf bzw. sprintf reinzuschauen, die sowas viel angenehmer machen. Da kann man dann auch gleich das obligatorische mysql_real_escape_string mit unterbringen
     
    Without deviation progress is not possible (F. Zappa)

  4. #19
    Registriert seit
    Mar 2004
    Ort
    Tiefste Provinz
    Beiträge
    304
    Also ich komme gradewegs aus dem PHP-Sicherheits-Thread hierher und dort hab' ich gelesen, man dürfe Fragesteller nachdem man deren Frage beantwortet hat auch gerne mal auf Sicherheitslücken in ihrem Code hinweisen, selbst wenn dies etwas off-topic ist.

    Nachdem die grundsätzliche Frage ja nun beantwortet ist, möchte deshalb nicht unerwähnt lassen, dass direktes Einfügen von $_POST-Variablen in SQL-Statements generell als unsicher bezeichnet werden muss.
    Bevor man also weiter diskutiert, ob die Verkettung eleganter ist als das direkte Einbetten, würde ich mal folgende Version zum Besten geben:

    PHP-Code:
    $sql "
      DELETE FROM `tabelle` WHERE `id` = '"
    .mysql_real_escape_string($_POST['id'])."'
    "

    So kann auch nix passieren, wenn der böse User zum Beispiel 0' OR `id` LIKE '%' ins Formular eintippt...

    PS/Nachtrag:
    Uuups, habe grade gelesen, dass mein Vor-Poster Sir Robin dies im Prinzip schon geschrieben hat. Erst lesen, dann posten...
    Geändert von ManicMarble (22.07.06 um 00:55 Uhr)
     
    Martin

  5. #20
    Wambo Wambo ist offline Mitglied Silber
    Registriert seit
    Jul 2006
    Beiträge
    86
    PHP-Code:
    $sql "
      DELETE FROM `tabelle` WHERE `id` = '"
    .mysql_real_escape_string($_POST['id'])."'
    "

    So kann auch nix passieren, wenn der böse User zum Beispiel 0' OR `id` LIKE '%' ins Formular eintippt...

    PS/Nachtrag:
    Uuups, habe grade gelesen, dass mein Vor-Poster Sir Robin dies im Prinzip schon geschrieben hat. Erst lesen, dann posten...
    Danke schön. Ich wollte den "adminbereich" auch noch passwort schützen. Das soll verhindern das der böse User überhaupt was eintippt.
     

  6. #21
    Wambo Wambo ist offline Mitglied Silber
    Registriert seit
    Jul 2006
    Beiträge
    86
    Ich hab ein neues Problem ich weiß nicht ob ich dafür ein neuen Thread aufmachen muss weil der hat hier indirekt was mit zutun. Ich hab das Script ausgebessert jetzt "klappt" es weil vorher wurde ein Fehler angezeigt.:
    PHP-Code:
    <?php
        
                $host
    ="localhost";
                
    $username="*****";
                
    $passwort="";
                
    $dbname="******";
        
            
    $connect mysql_connect($host$username$passwort);
            include(
    "/Connections/TEST.php");
            
    mysql_select_db($db_name);
      
            
    $res =       "SELECT `ID` 
                            
                            FROM `News` 
                            
                            ORDER BY `ID` DESC
                            "
    ;
            
            
    $del "DELETE FROM
             `News` WHERE `id`='"
    .mysql_real_escape_string($_POST['id'])."'"
             
    ;
            
            
    $delall =     "
                            DELETE    `NEWS`
                                 FROM     `NEWS`
                                 "
    ;
                                 
            
    $change "        UPDATE
                            `News`
                        SET
                            WHERE
                            `ID` = '"
    .mysql_real_escape_string($_POST['ID'])."'";
        
        
            
    $add "INSERT INTO `News`
                    `News`
                        VALUES
                            '"
    .mysql_real_escape_string($_POST['newstext'])."'";
                                 
        
    //if bedingungen 
        
    if($_POST['delete'])
        {
        
    mysql_query($del)  OR die(mysql_error())
        ;}
        
        if(
    $_POST['deleteall'])
        {
            
    mysql_query($delall)  OR die(mysql_error())

        ;}
        if(
    $_POST['change'])
        {
        
    mysql_query($change)  OR die(mysql_error())
        ;}
        if(
    $_POST['add'])
        {
            
    mysql_query($add)  OR die(mysql_error());
    }
        
    ?>
    Erläuterung: hinter POST sind einfach die englischen begriffe (waren kürzer also ändern, hinzufügen, alle löschen und löschen.)
    So wenn ich jetzt Was hizufügen etc. will dann passiert gar nichts alles bleibt wie vorher!
    Was ist falsch?
     

  7. #22
    Registriert seit
    Feb 2005
    Ort
    NRW
    Beiträge
    460
    Wenn es um das zufügen der Daten geht, probiere einmal folgendes:

    PHP-Code:
        $add 'INSERT INTO 
                            `News`
                       SET
                            `News` = "'
    .mysql_real_escape_string($_POST['newstext']).'"
               '

     

  8. #23
    flokli flokli ist offline Mitglied Gold
    Registriert seit
    Mar 2006
    Ort
    bei Mainz
    Beiträge
    100
    Zitat Zitat von Andrej Dyck
    Es gibt was einfaches.

    Beispiel:
    PHP-Code:
    $sql "SELECT * FROM table WHERE id = {$_POST['id']}"
    Gruß Andrej
    Es gibt noch was einfacheres:

    PHP-Code:
    $sql "SELECT * FROM table WHERE id = $_POST[id]"
     
    Why is Ajax so smart?
    -You can kill your server without a reload.

  9. #24
    Wambo Wambo ist offline Mitglied Silber
    Registriert seit
    Jul 2006
    Beiträge
    86
    Zitat Zitat von phaeton
    wie wäre es denn, in deinen change query nach SET anzugeben, welche spalte er mit welchem wert ändern soll?!

    Code :
    1
    
    $change = "UPDATE news SET spalte = 'inhalt'  WHERE id = '"$_POST['ID']'"";
    Jo cool es klappt. Funktioniert das bei den anderen (change, delete ...) auch so?
     

  10. #25
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Prinzipiell musst du wissen, dass du nur die Abfragedeklaration als Zeichenkette in einer Variable speicherst. Daher kannst du diesen Wert auch einfach mal ausgeben und manuell prüfen.
     
    Markus Wulftange

Ähnliche Themen

  1. Problem mit _POST[] Variablen
    Von Nerolein im Forum PHP
    Antworten: 5
    Letzter Beitrag: 09.02.10, 13:41
  2. Lebensdauer von $_POST Variablen
    Von FrankWST im Forum PHP
    Antworten: 3
    Letzter Beitrag: 05.08.09, 21:14
  3. mysql_query mit $variablen
    Von chuvak im Forum PHP
    Antworten: 3
    Letzter Beitrag: 14.01.09, 19:27
  4. Variablen-Verweise in $_POST
    Von Mike Rofon im Forum PHP
    Antworten: 2
    Letzter Beitrag: 05.08.07, 23:51
  5. Problem mit Variablen und $_Post
    Von Aztech im Forum PHP
    Antworten: 2
    Letzter Beitrag: 24.07.04, 11:03