+ Antworten
Ergebnis 1 bis 4 von 4

Thema: POST- Methode

  1. #1
    Neu an Board
    Registriert seit
    04.02.2009
    Beiträge
    36
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard POST- Methode

    hallo! ich habe ein Problem mit einem Formular von mir, mit welchem ich Termine in eine Db eintrage:

    PHP-Code:
        <?php
            
    mysql_select_db
    ($dbname);
            
    $Datumt = @$_POST["datumt"];
    $Datumm = @$_POST["datumm"];
    $Datumj = @$_POST["datumj"];
            
    $Bezeichnung = @$_POST["bezeichnung"];
            
    $Beschreibung = @$_POST["beschreibung"];
            
    $Zeit = @$_POST["zeit"];
    $Anzeige = @$_POST["anzeige"];
            
            
    $bttn $_POST["button"];

            
    $Datum$Datumj."-".$Datumm."-".$Datumt;

            
            
            
    //-------------------------- Einfügen ----------------------------    
        
    if ($bttn)    {    
    $query "INSERT INTO `jos_ckforms_3`(Bezeichnung, Beschreibung, Datum, Uhrzeit, Anzeige) VALUES ($Bezeichnung, $Beschreibung,$Datum, $Zeit, $Anzeige)";
            
    $result1 mysql_query($query);
            echo 
    $result1; }
            
            
        
                
            echo 
    '<form action="http://meineSeite.kilu.de/index.php?option=com_jumi&fileid=4&Itemid=82"  method=post>';
            echo 
    '<p>Tag: <input type="text" name="datumt" size="20" value = "05"></p>';
    echo 
    '<p>Monat: <input type="text" name="datumm" size="20" value = "05"></p>';
    echo 
    '<p>Jahr: <input type="text" name="datumj" size="20" value = "2009"></p>';
            echo 
    '<p>Bezeichnung: <input type="text" name="bezeichnung" size="20" value = "Neue2 Form"></p>';
            echo 
    '<p>Beschreibung: <input type="text" name="beschreibung" size="20" value = " "></p>';
            echo 
    '<p>Uhrzeit: <input type="text" name="zeit" size="20" value = "00:00:00"></p>';
    echo 
    '<p>Anzeigen: <input type="text" name="anzeige" size="20" value = " "></p>';
            echo 
    '<p><input type=submit name=button value="Anzeigen">';
            echo 
    '<input type=submit name=button value="Einfügen">';
        
            echo 
    '</form>';
                    
        
    ?>
    leider funktioniert dieses Formular nicht mit der POST methode..! wieso nicht?
    ich kan ndie Argmunte zwar mit GET übergeben.. aber das ist ja bekanntlicherweise nicht sehr sicher.

    auch wenn ich es mit
    PHP-Code:
    <form action="' .  $_SERVER["PHP_SELF"] . '"  method=post
    versuche funktioniert es nicht. Hier springt er nur ohne einfügen auf die Startseite.
    wer kann mir helfen?

  2. #2
    Verbringt hier viel Zeit
    Registriert seit
    31.05.2008
    Beiträge
    801
    Bedankte sich
    0
    Erhielt 268 Danksagungen
    in 214 Beiträgen

    Standard

    ganz spontan würde ich sagen, dass du keine Verbindung zur Datenbank hast? Es könnte vielleicht auch daran liegt, dass du ganz willkürlich mal Gänsefüßchen schreibst und dann auch wieder nicht.

    Mit "echo" und "print_r()" kannst du mal versuchen an den verschiedenen Stellen zu testen, ob eine Variable gesetzt ist und ob denn z.B. das "if" erreicht wird:(einfach echo "Test"; in das if schreiben, erscheint im Browser "Test" => if wird erreicht, ansonsten hast du was falsch gemacht).

    auch eine Möglichkeit ist es am Anfang der Datei einmal
    Code:
    echo '<pre>';print_r($_POST);echo '</pre>';
    zu schreiben, um zu sehen, was du überhaupt in deinem $_POST alles hast. Desweiteren würde ich dir raten, dass du während dem coden keine @ benutzt, die Fehlermeldungen unterdrücken.

    Beim zweiten Blick würde ich sagen, dass du dich schleunigst darüber informierst, wie man Formulardaten sicher (!!) ausliest und sicher (!!) in eine Datenbank schreibt. Der Code läd ja gerade dazu ein, dass du gehackt wirst (siehe: MySQL Injection und XSS)

    Beim dritten Blick würde ich sagen, dass du doch das Joomla-Framework nutzen solltest. JRequest und die Datenbankklassen zum escapen etc. Das vereinfacht ungemein das Auslesen.
    lg Måria

  3. #3
    Neu an Board
    Registriert seit
    04.02.2009
    Beiträge
    36
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    hallo!
    ja danke für deine Hilfe! des script läuft jetzt, war wirklich ein problem mit den Anführungszeichen!

    mit dem sichermachen der sql abfrage.. bzw. hier insert habe ich jedoch noch probleme weil ich mich da fast nicht auskenne.

    wenn man wiki trauen darf, soll folgendes helfen:
    Code:
    $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':value', $value);
    nur leider weiß ich nict wofür das $dbh steht! Bringt mir das überhaupt was, oder habt ihr einen besseren Vorschlag um das Insert sicherer zu machen? Hier mein Skript:

    Code:
    <?php
            
    mysql_select_db($dbname);
            $Datumt =  htmlspecialchars($_POST["datumt"]);
    $Datumm =  htmlspecialchars($_POST["datumm"]);
    $Datumj =  htmlspecialchars($_POST["datumj"]);
            $Bezeichnung =  htmlspecialchars($_POST["bezeichnung"]);
            $Beschreibung =  htmlspecialchars($_POST["beschreibung"]);
            $Zeit =  htmlspecialchars($_POST["zeit"]);
    $Anzeige =  htmlspecialchars($_POST["anzeige"]);
            
            $bttn = $_POST["button"];
    
            $Datum= $Datumj."-".$Datumm."-".$Datumt;
    
    
            
            //-------------------------- Einfügen ----------------------------    
        
    if ($bttn) {
    $query = "INSERT INTO jos_ckforms_3 (Bezeichnung, Beschreibung, Datum, Uhrzeit, Anzeige) VALUES ('$Bezeichnung', '$Beschreibung','$Datum', '$Zeit', '$Anzeige')";
            $result1 = mysql_query($query);
            echo $result1; }
            
            
        
                
            echo '<form action="http://meineSeite.de/index.php?option=com_jumi&fileid=4&Itemid=82"  method=POST>';
            echo '<p>Tag: <input type="text" name="datumt" size="10" value = "">'." &nbsp ";
    echo 'Monat: <input type="text" name="datumm" size="10" value =  "">'." &nbsp ";;
    echo 'Jahr: <input type="text" name="datumj" size="10" value = ""></p>';
            echo '<p>Bezeichnung: <input type="text" name="bezeichnung" size="20" value =  ""></p>';
            echo '<p><TEXTAREA NAME="beschreibung" WRAP="physical" COLS=40 ROWS=10>
    </TEXTAREA> </p>';
            echo '<p>Uhrzeit:    <input type="text" name="zeit" size="20" value =  "00:00:00"></p>';
    echo '<p>Anzeigen: <SELECT NAME="anzeige" SIZE=2 MULTIPLE>
    <OPTION> Intern
    <OPTION> Oeffentlich
    </SELECT> </p>';
       
            echo '<input type=submit name=button value="Einfügen">';
        
            echo '</form>';
                    
        ?>
    wäre super wenn mir wieder wer helfen könnte!
    danke!

  4. #4
    Neu an Board
    Registriert seit
    05.03.2009
    Ort
    Konstanz
    Alter
    29
    Beiträge
    13
    Bedankte sich
    2
    Erhielt 2 Danksagungen
    in 2 Beiträgen

    Standard

    hi,

    also dbh steht wohl für das Datenbank-Handle
    du kannst es einmal prozedural deklarieren:
    PHP-Code:
    $dbh = @mysql_connect('host''user''password'); 
    oder objektorientiert:
    PHP-Code:
    $dbh = new mysql("localhost""root""pw"); 
    mit diesem befehl stellst du die verbindung zur datenbank her,
    es ist vergleichbar mit einem pointer der auf die datenbankstruktur zeigt.

    wenn du das Datenbank-Handle über die objektorientierte (bevorzugte) variante anlegst, solltest du mit folgender zeile einen eintrag in die tabelle erstellen können:
    PHP-Code:
    $dbh->query("INSERT INTO `Tabelle`(`Name`) VALUES('$Name')"); 
    dabei ist die variable $Name wie folgt deklariert:
    PHP-Code:
    $Name $_POST['Name']; 
    ich würde dir bei variablen und tabellennamen immer die backticks raten (`). sie verhindern bei gleicher benennung mit einer systemvariablen den fehler.

    mfg cappaja

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein