php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.04.2008, 21:26  
Neuer Benutzer
 
Registriert seit: 09.04.2008
Beiträge: 15
xx_heidi_xx befindet sich auf einem aufstrebenden Ast
Standard Bei richtiger Eingabe Daten an nächste Seite versenden

hey,

nach langer erfolgloser sucherei, lande ich nun hier..
ich habe eine php seite erstellt - auf dieser seite befindet sich ein formular. in diesem formular ist ein eingabefeld vorhanden.

hierbei soll bei falscher eingabe (buchstaben oder sonderzeichen) auf der selben seite "Bitte geben Sie nur Zahlen ein" ausgegeben werden" - der User muss dann also nochmals die richtigen Daten eingeben. Ebenfalls sollte dem User auch eine Fehlermeldung angezeigt werden, wenn er das Formular absenden möchte, ohne eine Zahl eingetragen zu haben.

Bei richtiger Eingabe wird er gleich zur nächsten Seite weitergeleitet (ohne das eine Meldung erscheint)

Mein problem ist nun folgendes: wie gebe ich so eine Fehlermeldung aus - ohne gleich auf die nächste seite zu verwiesen werden.


ich habs nun mal so probiert - hier wird die meldung nur auf der gleichen seite angezeigt.. gebe ich step4.php dazu ein.. gibt er mir wohl zuerst die fehlermeldung ein, doch schlussendlich wird man trotzdem auf die nächste seite verwiesen. bei falscher eingabe muss er also nochmals aufgefordert die daten richtig einzugeben - dann sollten die daten erneut überprüft werden, ist dann alles korrekt - soll er auf die nächste seite verwiesen werden.

hoffe mir kann jemand weiterhelfn.... weiß leider nicht weiter.. und kenn mich nich so gut aus
wär euch wirklich sehr dankbar!!!!!!!!
gruss heidi

Code:
<form name="form1" method="POST"> <!--action="step4.php">-->

<p>Startnummer:
<input type="text" name="startnr" size="5">
</p>

<p>
<input type="submit" name="Weiter" value="Submit">
<input type="reset" name="reset" value="Reset">


<input type="hidden" name="absenden" value="1">
</p>
</form>

      <div align="left"><span class="Stil18">Teilnehmerliste </span></div>
      
<?php

    $nr=$_POST['startnr'];
    
    if(empty($nr))  {
                echo "<span class=\"Stil7 Stil19\"><br>Bitte geben Sie eine Start Nummer ein</span>";

        } 
        elseif(!empty($nr)) {
            //echo "Die Telefonnummer darf nur aus Zahlen bestehen.";
            
            }
    
    if ((ctype_digit($nr)) ) {

    
    //if (!(ctype_digit($nr)) ) {
    
    echo "<h4>OK</h4>";
    //echo "<form action=\"step4.php\">";
    }
    
    else
    {
    echo "<h4>nicht ok</h4>";
    }
?>
xx_heidi_xx ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.04.2008, 21:43  
Erfahrener Benutzer
 
Benutzerbild von Hu5eL
 
Registriert seit: 26.02.2008
Beiträge: 342
Hu5eL befindet sich auf einem aufstrebenden Ast
Hu5eL eine Nachricht über ICQ schicken
Standard

um das ganze simpel zu gesatelt. fehler gibste aus mit
PHP-Code:
echo 
und weiterleiten mit
PHP-Code:
header("Location: http://www.example.com/");
exit(); 
Hu5eL ist offline  
Alt 10.04.2008, 09:13  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Du musst dir bewusst sein, dass PHP-Code auf dem Server ausgeführt wird. Die Eingaben erfolgen aber auf dem Client. Deshalb nützt dir weder echo, noch header() etwas. Wenn du die Überprüfung vor dem Abschicken des Scripts überprüfen willst, muss das auf dem Client erfolgen, und das geht nur mit Javascript. Dazu definierst du irgendwo. am besten in der Headersektion eine JS-Funktion, die auf Ziffern und leer überprüft, z.B. chk_startnr(). Diese rufst du dann entsprechend auf:
Code:
<input type="text" name="startnr" onchange='chk_startnr()' size="5">
//bzw.
<input type="submit" name="Weiter" onclick='chk_startnr()' value="Submit">
Den Code für die Funktion zu posten würde wahrscheinlich zu weit führen, ausserdem gibts dafür ja ein anderes Forum
__________________
Gruss
L
lazydog ist offline  
Alt 10.04.2008, 10:41  
Erfahrener Benutzer
 
Registriert seit: 29.02.2008
Beiträge: 102
Thomas befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von lazydog Beitrag anzeigen
... muss das auf dem Client erfolgen...
Hallo,

Da kannst du auch gleich die Prüfung sein lassen! Vertraue niemals Daten vom Anwender.

Prüfe die Daten nach dem abschicken in PHP und zeige das Formular erneut an, wenn die Daten falsch sind (am Besten noch mit einem Hinweis). Sind die Daten korrekt kannst du wie gehabt weiterleiten.

Gruß Thomas
Thomas ist offline  
Alt 10.04.2008, 10:45  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von Thomas Beitrag anzeigen
Hallo,

Da kannst du auch gleich die Prüfung sein lassen! Vertraue niemals Daten vom Anwender.

Prüfe die Daten nach dem abschicken in PHP und zeige das Formular erneut an, wenn die Daten falsch sind (am Besten noch mit einem Hinweis). Sind die Daten korrekt kannst du wie gehabt weiterleiten.

Gruß Thomas
Da hast du wohl recht, also wenn man eine JS-Überprüfung machen will, sollte man trotzdem noch eine Überprüfung in PHP machen und da das dann doppelt wäre ist die JS-Überprüfung wohl in den meisten Fällen sinnlos.
cycap ist offline  
Alt 10.04.2008, 11:30  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von cycap Beitrag anzeigen
Da hast du wohl recht, also wenn man eine JS-Überprüfung machen will, sollte man trotzdem noch eine Überprüfung in PHP machen und da das dann doppelt wäre ist die JS-Überprüfung wohl in den meisten Fällen sinnlos.
Da hast du grundsätzlich schon recht, bei grösseren Formularen kann das, v.a. bei langsamen Leitungen, aber durchaus von Vorteil sein. Dafür brauchst du dann die für die erneute Darstellung nicht alle Werte ins Formular zu schreiben. Und der Aufwand ist ja gering.
__________________
Gruss
L
lazydog ist offline  
Alt 13.04.2008, 11:03  
Neuer Benutzer
 
Registriert seit: 09.04.2008
Beiträge: 15
xx_heidi_xx befindet sich auf einem aufstrebenden Ast
Standard wie kann ich das machen??

doch wie kann ich die Daten (vom Formular) im PHP prüfen?? Ich weiß nicht wirklich wie das gmacht werden soll - das der User bei falscher Eingabe nicht auf die nächste Seite verwiesen wird.
Bitte um Hilfe.... danke..
xx_heidi_xx ist offline  
Alt 14.04.2008, 08:20  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.034
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Einfach kurz skizziert:
PHP-Code:
<?php
error_reporting
(E_ALL);

$Eingabefeld1 = isset($_POST['Eingabefeld1']) ? $_POST['Eingabefeld1'] : '';
$Eingabefeld2 = isset($_POST['Eingabefeld2']) ? $_POST['Eingabefeld2'] : '';
....


if (!empty(
$_POST['go']) || !empty($_POST['set']){
    
$ok true;
    if (
$Eingabefeld1 ist nicht ok){
        
Fehlermeldung;
        
$ok false;
    }
    if (
$Eingabefeld2 ist nicht ok){
        
Fehlermeldung;
        
$ok false;
    }
    ...
    if (
$ok){
        
weiterleiten;
    }
}
echo 
"<form action='" $_SERVER['PHP_SELF'] . "' method='post'>
    <input name'Eingabefeld1' value='$Eingabefeld1' .... /><br />
    <input name'Eingabefeld2' value='$Eingabefeld2' .... /><br />
    ....
    <input type='hidden' name='set' value='1' /><br />
    <input type='submit' name='go' value='Weiter' /><br />
    </form>\n"
;    
?>
D.h. du schickst dein Formular ab (ans gleiche Script), überprüfst die entsprechenden Daten. Sind diese ok, leitest du auf das entsprechende Script weiter, andernfalls zeigst du das Formular erneut an, mit den entsprechenden Fehlermeldungen.
__________________
Gruss
L
lazydog ist offline  
Alt 14.04.2008, 20:49  
Neuer Benutzer
 
Registriert seit: 09.04.2008
Beiträge: 15
xx_heidi_xx befindet sich auf einem aufstrebenden Ast
Standard weiß leider nicht weiter :-((

danke für deine hilfe lazydog..
hab aber in der zwischenzeit meinen code mal umgeschrieben und es so probiert:



Code:
<?php session_start();
 
$fo=$_REQUEST["fo"];
if($fo==""){print_form();}
if($fo=="kontrolle"){check_input_data();}
 
//---------------------------
function print_form()
{
 
echo "<table width=\"472\" height=\"287\" border=\"0\" align=\"center\" cellpadding=\"1\" cellspacing=\"0\" bgcolor=\"#2d58a0\">";
  echo "<tr>";
    echo "<th width=\"455\" height=\"19\" scope=\"2\">&nbsp;</th>";
    echo "<th width=\"4\" scope=\"2\">&nbsp;</th>";
    echo "<th width=\"8\" scope=\"col\">&nbsp;</th>";
  echo "</tr>";
  echo "<tr>";
    echo "<th height=\"15\" bgcolor=\"#CBD7DC\" scope=\"2\"><p class=\"Stil14\"><strong>SMS Newsletter </strong></p></th>";
    echo "<th scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
  echo "<tr>";
    echo "<th height=\"15\" bgcolor=\"#CBD7DC\" scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
  echo "<tr>";
    echo "<th rowspan=\"8\" bgcolor=\"#CBD7DC\" scope=\"2\">";
 echo "<p align=\"left\" class=\"Stil14\">Geben Sie hier die Startnummer des gew&uuml;nschten Ironman-Teilnehmers ein. Sollten Sie die   Startnummer nicht kennen, suchen Sie diese in der Starterliste.</p>";     
  echo "<p align=\"left\" class=\"Stil14\">&nbsp;</p>"; 
 
 
    $s="<form method='POST' action='testform.php'>";
    $s.="<input type='hidden' name='fo' value='kontrolle'>";
    $s.="<p>Startnummer:&nbsp;<input type='text' name='fenummer' size='5'></p><br><br>";
    $s.="<input type='submit' value='Abschicken'>&nbsp;<input type='reset' name='reset' value='Reset'>";
    $s.="</form>";
    echo $s;
 
 echo "<p class=\"Stil7 Stil19\">&nbsp;</p>";
      echo "<p align=\"left\" class=\"Stil14\"></p>";
   echo "<div align=\"right\">";
        echo "<p class=\"Stil14\">&nbsp;</p>";
        echo "<p class=\"Stil14\">";
           echo "</div></th>";
    echo "<th height=\"15\" scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
 
  echo "<tr>";
    echo "<th height=\"15\" scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
  echo "<tr>";
    echo "<th height=\"15\" scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
  echo "<tr>";
    echo "<th height=\"15\" scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
  echo "<tr>";
    echo "<th height=\"15\" scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
  echo "<tr>";
    echo "<th height=\"15\" scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
  echo "<tr>";
    echo "<th height=\"15\" scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
  echo "<tr>";
    echo "<th height=\"37\" scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
  echo "<tr>";
    echo "<th height=\"15\" bgcolor=\"#2d58a0\" scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"2\">&nbsp;</th>";
    echo "<th scope=\"col\">&nbsp;</th>";
  echo "</tr>";
echo "</table>";
 
}
 
//---------------------------
function check_input_data()
{
    $email=$_REQUEST['femail'];
    $name=$_REQUEST['fename'];
    $startnr=$_REQUEST['fenummer'];
 
    $e=false;
 
    if(ereg("[^0-9+\-]",$startnr))
    { 
 print_form();
        exit("<h1><div align=\"right\">Die eingegebene Start Nummer ist ungültig!</div></h1>");
    }
    else
    {
  //Header("Location: testform2.php" . $_POST[$startnr]);
  $_SESSION['startnr'] = $startnr;
  //echo $startnr_post;
  Header("Location: step4.php");
  //echo $buf;
   //sendToHost('www.google.com','get','/search','q=php_imlib');
 //Header("Location: testform2.php?$startnr");
 //http://www.seite.de/pfad/seite.php?var1=wert1
    }
}
?>
<html>
<head>
<title>Unbenanntes Dokument</title><style type="text/css">
 
</head>
<body>
<?php
 include('db_conn.php'); 
 
 //echo $startnr;
    $sqlab = "select * from athlete where athlete.fenummer = $auswahl";
   //$sqlab = "SELECT startnr,  firstname, lastname FROM athlete where startnr = $startnr";
   $res = mysql_db_query("test", $sqlab);
   //$num = mysql_num_rows($res);
?>
</body>
</html>
hab jetzt aber trotzdem noch ein kleines problemchen.. hoffe du kannst mir hierbei behilflich sein.
wenn ich nun einen buchstaben eingebe, gibt er mir die fehlermeldung aus (startnummer ist ungültig). klickt man dann jedoch nochmal auf absenden - wird man trotzdem auf die nächste seite weiterverbunden. obwohl noch immer der falsche buchstabe drin ist..
wenn nichts eingetragen wird, wird der user auch wieder auf die nächste seite verbunden (

ich hoffe mir kann noch jemand weiter helfn - möchte nicht wieder den ganzen code umschreiben..
bitte um hilfe.. vielen dank in voraus!!!!!!!
xx_heidi_xx ist offline  
Alt 14.04.2008, 21:05  
Erfahrener Benutzer
 
Registriert seit: 28.03.2008
Beiträge: 1.846
HPR1974 wird schon bald berühmt werden
Standard

Das ist mal sowas von unübersichtlich..
Du solltest Deinen Code mal etwas strukturieren und vom Ablauf so vorgehen, wie lazydog es beschreibt.
Erst auf Fehler checken, wenn Kein Fehler weiterleiten und exit.
Wenn Fehler Fehlermeldung anzeigen und Formular mit den Werten.

Btw. Deine Funktion check_input_data() ist nicht wirklich gut geschrieben.
- Funktionen immer mit parametern aufrufen und keine globals innerhalb der Funktion benutzen.
- Jede Funktion sollte einen Rückgabewert besitzen.
- Eine Funktion sollte kein echo benutzen, sondern über den oben beschriebenen Rückgabewert arbeiten.
- eine Funktion für eine Funktion --> eine Funktion prüft die Telefonnummer, eine die email, etc.
...
HPR1974 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] sql daten für einen kunden auslesen/ändern im Formular PHP Tipps 2005-2 3 12.10.2005 08:36
[Erledigt] Daten auslesen und ändern Datenbanken 2 17.09.2005 19:28
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
Daten Eingabe automatisch ergänzen superbike PHP Tipps 2005-2 1 18.08.2005 13:54
[Erledigt] Formular - Eingabe Daten nicht löschen... PHP Tipps 2005-2 4 04.07.2005 09:09
zurück zu Seite per hyperlink und Daten erhalten nieselfriem PHP Tipps 2005-2 8 15.06.2005 00:05
POST Daten via JavaScript versenden Stinger HTML, Usability und Barrierefreiheit 9 20.03.2005 20:18
POST Daten via JavaScript versenden Stinger PHP Tipps 2005 1 20.03.2005 02:40
mit PHP per POST Daten an eine Fremde seite schicken? Kenshin PHP Tipps 2005 7 04.02.2005 16:20
Mit post an weitere Seite oder 2 Seiten übergeben? PHP Tipps 2005 1 02.02.2005 12:16
Daten übergeben kampfnickel PHP Tipps 2005 4 05.01.2005 14:12
Übermitteln der daten ? PHP Tipps 2004-2 9 05.12.2004 13:18
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
[Erledigt] Formular mit Daten werden auf anderer Seite zusammengefasst PHP Tipps 2004 4 15.08.2004 15:44
Modales Fenster zur Eingabe von Daten HTML, Usability und Barrierefreiheit 0 22.06.2004 12:52

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-tipps-2008/856-bei-richtiger-eingabe-daten-naechste-seite-versenden.html, bei richtiger eingabe daten an nächste seite versenden, php kontrolle eingabe, php formular eingabe kontrolle, (37) ungültige eingabedaten.<br>, php formular eingaben prüfen und dann an nächste seite weiterleiten, php überprüfen und weiter senden, bei richtiger eingabe nächste seite html, formulareingaben validieren dann auf nächste formularseite daten übergeben, php eingabedaten überprüfen, php pfad an nächste seite senden, überprüfung dateneingaben weiterleitung auf andere seite php, javascript an folgende seite senden, javascript \wenn fehler\ bei überprüfung nicht reset, formulareingaben prüfen und dann an nächste seite weiterleiten, formular eingaben prüfen und dann an nächste seite weiterleiten, php wenn dann nächste seite, php daten posten zu nächster seite, php nach versenden auf neue seite, php echo auf neue seite

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum