kostenloser Webspace werbefrei: lima-city


PHP if Abfrage weiterführen per btn klick

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    marvinkleinmusic

    Kostenloser Webspace von marvinkleinmusic

    marvinkleinmusic hat kostenlosen Webspace.

    Hallo Zusammen,

    Ich habe ein kleines Problem bezüglich einer if Abfrage.

    Ich lasse beim Absenden eines Formulars die Variabeln auf Inhalt Prüfen. Dies funktioniert auch soweit.
    Allerdings kann eine Variabel Leer bleiben muss aber erst daraufhin bestätigen.

    Nun mein Problem:

    Beim absenden des Formulars (wenn ausgefüllt bis auf das eine Feld) erscheint eine Meldung
    PHP Dazu:
    elseif($download_smule_iframe == ""){
    					echo"<div class=\"alert alert-dismissable alert-warning\">Das Smule-iFrame fehlt! Dennoch fortfahren? <form method=\"post\" action=\"downloads.php\"><button type=\"submit\" name=\"yes\" class=\"btn btn-default\">Ja</button></form> <button class=\"close\" data-dismiss=\"alert\" type=\"button\">x</button></div>";
    					}


    Wenn man nun aber auf den Button mit Ja drückt , soll es dennoch in die Datenbank eingetragen werden. Doch wie bekomme ich es hin das er den Buttonklick akzeptiert ohne per Form auf eine weitere Seite zuleiten?

    habe es dann Probiert mit einer einfachen if Abfrage ob der Button gedrückt wurde.
    if(isset($_POST['yes'])){
    						$download_name = mysqli_real_escape_string($db, $_POST['download_name']);
    						$download_artist = mysqli_real_escape_string($db, $_POST['download_artist']);
    						$download_iframe = mysqli_real_escape_string($db, $_POST['download_iframe']);
    						$download_sichtbarkeit = mysqli_real_escape_string($db, $_POST['download_sichtbarkeit']);
    						$download_seite = mysqli_real_escape_string($db, $_POST['download_seite']);
    						$download_beschreibung = mysqli_real_escape_string($db, $_POST['download_beschreibung']);
    						$download_smule_iframe = mysqli_real_escape_string($db, $_POST['download_s_iframe']);
    						
    							echo $download_name;
    					}


    Problem dabei die Variabeln sind dort alle Leer da diese ja in einer Form eingegeben werden , die außerhalb des Ja Buttons liegen.

    Ich möchte hier gerne auf die confirm Methode per Javascript verzichten.

    Irgendwelche Ideen? :)


    LG
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. robert-giebel

    Kostenloser Webspace von robert-giebel

    robert-giebel hat kostenlosen Webspace.

    Hey,
    du musst die Variablen in dem Formular, dass bestätigt werden muss, eintragen bzw. mitschicken.
    Vielleicht funktioniert's ja so (nicht getestet):
    elseif($download_smule_iframe == ""){
                        echo "
                       <div class=\"alert alert-dismissable alert-warning\">Das Smule-iFrame fehlt! Dennoch fortfahren?     
                       <form method=\"post\" action=\"downloads.php\">
                             <input type=\"submit\" name=\"yes\" class=\"btn btn-default\">Ja<br> 
                             <input type=\"hidden\" name = \"download_name\"/ value=\" Inhalt \">
                             <input type=\"hidden\" name = \"download_artist\"/ value=\" Inhalt \">
                             <input type=\"hidden\" name = \"download_iframe\"/ value=\" Inhalt \"> 
                             <input type=\"hidden\" name = \"download_sichtbarkeit\"/ value=\" Inhalt \"> 
                             <input type=\"hidden\" name = \"download_seite\"/ value=\" Inhalt \">    
                             <input type=\"hidden\" name = \"download_beschreibung\"/ value=\" Inhalt \">     
                             <input type=\"hidden\" name = \"download_s_iframe\"/ value=\" Inhalt \">             
                      </form> 
                      <button class=\"close\" data-dismiss=\"alert\" type=\"button\">x</button></div>";
                        }

    Beachte, dass statt "Inhalt" als Value immer der entsprechende Wert stehen muss.

    PS: Bei PHP ist es üblich <input> als Button zu nutzen und nicht <button> (zumindest in Formularen).

    Ich hoffe es funktioniert und hilft dir weiter. :)
  4. Autor dieses Themas

    marvinkleinmusic

    Kostenloser Webspace von marvinkleinmusic

    marvinkleinmusic hat kostenlosen Webspace.

    Ansich keine schlechte Idee , dennoch möchte ich auch gerne keine hidden inputs verwenden da man diese in fasst jeden Browser einfach Manipulieren kann.

    LG
  5. m******e

    marvinkleinmusic schrieb:
    Ansich keine schlechte Idee , dennoch möchte ich auch gerne keine hidden inputs verwenden da man diese in fasst jeden Browser einfach Manipulieren kann.
    Hatte die gleiche Idee wie robert-giebel als ersten Impuls, mit einer Ausnahme:
    Prüfe den Inhalt der Variabeln einfach erneut. ;)
  6. robert-giebel

    Kostenloser Webspace von robert-giebel

    robert-giebel hat kostenlosen Webspace.

    hmm, um hidden Input zu manipulieren müsste man direkt auf den Quellcode zugreifen oder seinen eigenen Traffic manipulieren. Du kannst aber als Schutz davor einen Javascript einbinden, der das Rechtsklickmenü deaktiviert. Somit braucht man dann NoScript, um die Werte zu manipulieren. Wenn du aber nur PHP nutzen willst musst du wohl oder übel damit leben.
    Bei "Post" werden die Daten aber im Hintergrund gesendet und sind nicht so leicht zu manpulieren, wie bei der "Get"-Methode.
    Wenn du den Value mit PHP einträgst, wird er in der Quellcodeansicht nicht sichtbar. Was man nicht sieht, kann man nicht manipulieren.
    <input type=\"hidden\" name = \"download_name\"/ value=\" <?php echo $was_auch_immer;?> \">
  7. Autor dieses Themas

    marvinkleinmusic

    Kostenloser Webspace von marvinkleinmusic

    marvinkleinmusic hat kostenlosen Webspace.

    menschle schrieb:
    marvinkleinmusic schrieb:

    Prüfe den Inhalt der Variabeln einfach erneut. ;)



    Ja aber wie mache ich das ? Wenn ich den Button in einer Form packe lädt er die Seite neu und die Variabeln sind leer weil er ein zweites Form überträgt. hab ich nur den btn da und füge dann:
    if(isset($_POST['yes'])){
    bla bla bla
    }


    ein passiert beim Klick auf den Button nichts.


    LG
  8. m******e

    In einer Mail-Form habe ich es so gelöst:
    Javascript prüft bereits vor. Beim absenden prüft php, ob alle Felder ordnungsgemäß ausgefüllt wurden.
    Ist dies nicht der Fall, werden alle ausgefüllten Felder wieder zum Browser mitgesendet, und falsch ausgefüllte Felder werden rot angezeigt. Beim erneuten absenden wird wieder von php geprüft, usw. ;)

    Beitrag zuletzt geändert: 23.4.2014 1:11:59 von menschle
  9. robert-giebel

    Kostenloser Webspace von robert-giebel

    robert-giebel hat kostenlosen Webspace.

    Deswegen ist es notwendig die Daten mitzuschicken. Das geht am einfachsten mit den Hidden Inputs.
    Wie gesagt, wenn du die Daten per PHP in die Inputs einträgst, werden die Werte in der Quellcodeansicht nicht angezeigt.
    PHP Code wird grundsätzlich in der Quellcodeansicht ausgeblendet.

    Beitrag zuletzt geändert: 23.4.2014 0:24:52 von robert-giebel
  10. m******e

    marvinkleinmusic schrieb:
    Ja aber wie mache ich das ? Wenn ich den Button in einer Form packe lädt er die Seite neu und die Variabeln sind leer weil er ein zweites Form überträgt.
    Nehme einfach immer wieder dieselbe Form. Wozu brauchst Du eine Zweite?

    Beispiel:
    if(isset($_POST['Name'])){$Name=$_POST['Name']}else{$Name=""};
    .. usw.
    Zum Schluss dann alles mit echo ausgeben.

    Tante Edit:
    Online-Beispiel

    Beitrag zuletzt geändert: 23.4.2014 1:14:56 von menschle
  11. hm, ganz ehrlich? Seit ich mich mit jquery plagen muss, finde ich eine alternative Abarbeitungsart für Formulare sinnvoller:

    Das Formular:

    <form id="form_input" method="post" action="da_wo_der_schrunks_hin_soll.php">
    <input type="text" id="eingabe1" value="..." />
    <input type="text" id="eingabe2" value="..." />
    <input type="text" id="eingabe3" value="..." />
    <input type="button" class="submit">
    </form>


    ganz banale geschichte, submit fällt weg, das erledigen wir über JavaScript. Man könnte auch action und method rauskicken, dann muss anstatt .submit() .post() mit entsprechenden Übergabeparametern verwendet werden. Dafür mussen wir bei dem Event $(document).ready() einen Event-Listener reinhängen, der auf den Klick auf unseren Button reagiert:

    $(document).ready(function () {
       $("#form_input .submit").click(function(){
          //funktionsaufrufe, die du erledigt haben willst bis
          $("#form_input").submit();
       });
    });


    ansonsten gibt es die Möglichkeit, dass du anstatt des Click events einen normalen submit-Button nimmst und dich in das Submit-Event reinhängst, funktioniert dann ähnlich. dann musst du kein PingPong mit dem Server spielen und reduzierst last, als wenn du das Teil vom PHP abarbeiten lässt... darüber kannst du dann die abschlussvalidierung machen, wenn beim User alles durch ist...

    PS: und wenn du trotzdem Ping-Pong mit dem Server spielen willst, kannst du die Validierung ein ein PHP-Script auslagern, über ajax ansprechen und dir über ein json-Objekt die Auswertung schicken lassen, die du entsprechend behandelst... da gehen wir dann aber mehr und mehr richtung OOP

    Beitrag zuletzt geändert: 23.4.2014 9:53:31 von sebulon
  12. Ich würde den eingegebenen Text einfach in einer Session zwischenspeichern, dann hast du keine hidden-inputs, kein JS, was man ja im Browser auch deaktivieren kann, und manipulieren kann der User daran auch nichts. Da ich nicht genau weiß, wie weit deine PHP-Kenntnisse fortgeschritten sind, verlinke ich einfach mal das Schattenbaum Kapitel dazu http://www.schattenbaum.net/php/sessions.php, das dient als guter Einstieg.
    Am Ende, also wenn alles in deiner Datenbank gespeichert ist, solltest du aber nicht vergessen, die Session-Variablen wieder zu leeren oder ganz zu löschen. Denn falls der User eine zweite Eingabe machen will, kann es sonst zu Problemen kommen.

    Beitrag zuletzt geändert: 24.4.2014 22:12:55 von tct
  13. Und blos alles Servseitig anständig prüfen, so Sachen die hier vorgeschlagen wurden wie Rechtsklick deaktivieren oder das POST schwere ist zu manipulieren solltest du getrost ignorieren. Sobald jemand einfach nur kleine Hilfsmittel nimmt, bspw. NoScript und Tamper Data, manipuliert er was er will. Immer von den schlimmsten Usern ausgehen, dann kann man nichts falsch machen.
  14. m******e

    Mag ja alles ganz schön und gut klingen, aber folgendes gebe ich zu bedenken:
    - Wozu zwingend JavaScript?
    - Wozu Sessions?

    Beides wäre nicht brauchbar, wenn es im Browser der Anwender abgeschaltet ist.
  15. menschle schrieb:
    Mag ja alles ganz schön und gut klingen, aber folgendes gebe ich zu bedenken:
    - Wozu zwingend JavaScript?
    - Wozu Sessions?

    Beides wäre nicht brauchbar, wenn es im Browser der Anwender abgeschaltet ist.


    Javascript im Browser abschalten? Ja, geht.

    Sessions im Browser abschalten? Nein, geht nicht :wave:
    PHP-Sessions werden auf dem Server verwaltet und nicht auf dem Client.

    Oder meinst Du Cookies auf deren Basis eine Session läuft? :confused:
    Die kann man am Client/Browser natürlich ausschalten.

  16. Oder meinst Du Cookies auf deren Basis eine Session läuft? :confused:
    Die kann man am Client/Browser natürlich ausschalten.

    Richtig man kann Cookies ausschalten, aber die Sessions laufen auf dem Server, die kann man nicht umgehen. Genau deswegen habe ich die Möglichkeit ja mal ins Spiel gebracht. Sie kostet zwar vielleicht ein bisschen mehr Arbeit, ist in meinen Augen aber am besten geeignet.
  17. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!