php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.11.2008, 16:56  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von phpels Beitrag anzeigen
Aeh - Ich hab das doch ausprobiert.
Bei einem Fehler brauche ich doch nur den Back-Button des Browsers drücken und mit einem "reload" das captcha zurücksetzen.

Aber vielleicht sollte ich das extra hinschreiben ...

Danke für den Hinweis.

Liebe Grüße
phpels
Wenn man es extra hinschreiben muss ist das keine wirkliche "Usability" mehr.
robo47 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 30.11.2008, 17:42  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

So ists besser (Direktausgabe). Weil der Back-Button funktioniert nur, wenn der Browser das unterstützt. Ausserdem hat der User dann die Fehlermeldungen nicht mehr vor Augen.

Nun aber zum nächsten. Die Ausgabe innerhalb der Formularfelder mußt Du html-maskieren. Das Wiki ist das aufs Prinzip reduziert. Du solltest also htmlspecialchars zur Ausgabe verwenden, sonst macht Dir die erste Eingabe mit " schon dein Formular kaputt. Oder schlimmeres.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 30.11.2008, 19:15  
Benutzer
 
Registriert seit: 25.10.2008
Beiträge: 50
phpels befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
So ists besser (Direktausgabe). Weil der Back-Button funktioniert nur, wenn der Browser das unterstützt. Ausserdem hat der User dann die Fehlermeldungen nicht mehr vor Augen.

Nun aber zum nächsten. Die Ausgabe innerhalb der Formularfelder mußt Du html-maskieren. Das Wiki ist das aufs Prinzip reduziert. Du solltest also htmlspecialchars zur Ausgabe verwenden, sonst macht Dir die erste Eingabe mit " schon dein Formular kaputt. Oder schlimmeres.
Sieht dann so aus ?

PHP-Code:
<script language="php">

include("ikenndifunctions.inc.php");
 
 
// Prüfen, ob sich die Seite selbst aufgerufen hat
    
if ( isset($_POST["do"]) && $_POST["do"] == "insert" )
    {
    
// Die Seite hat sich selbst aufgerufen
    


    // Pflichtfeldkontrolle
        
    
$error_msg    =    "";    
    
    if ( 
$_POST["Vorname"] == "" )
    {
        
$error_msg    =    "Bitte geben Sie einen Vornamen an.<br>";
    }
    
    if ( 
$_POST["Zuname"] == "" )
    {
        
$error_msg    .=    "Bitte geben Sie einen Zunamen an.<br>";
    }
    
    if ( 
$_POST["email"] == "" )
    {
        
$error_msg    .=    "Bitte geben Sie eine email Adresse an.<br>";
    }
        if ( 
$_POST["Anliegen"] == "" )
    {
        
$error_msg    .=    "Bitte geben Sie ein Anliegen ein .<br>";
    }
    
          

// CAPTCHA


session_start();
if(isset(
$_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset(
$_SESSION['captcha_spam']);
}
else{
   
$error_msg    .=    "Der Sicherheitscode ist falsch.<br>";
}  
    
// End CAPTCHA


    
    
if ( $error_msg    == "")
    {
        
// Alles o.k.
        
               
        // Datenbank-Zugriff
        
mysqlconnect();
        
        
// INSERT
        
$query    =    "INSERT INTO ikenndi(Vorname, Zuname, frmAdresse, frmPLZ, frmOrt, frmTelNr, email, Anliegen) VALUES ( ";
        
$query    .=    " '" mysql_real_escape_string($_POST['Vorname']) . "', ";
        
$query    .=    " '" mysql_real_escape_string($_POST['Zuname']) . "', ";
        
$query    .=    " '" mysql_real_escape_string($_POST['frmAdresse']) . "', ";
        
$query    .=    " '" mysql_real_escape_string($_POST['frmPLZ']). "', ";
        
$query    .=    " '" mysql_real_escape_string($_POST['frmOrt']) . "', ";
            
$query    .=    " '" mysql_real_escape_string($_POST['frmTelNr']) . "', ";
            
$query    .=    " '" mysql_real_escape_string($_POST['email']) . "', ";
            
$query    .=    " '" mysql_real_escape_string($_POST['Anliegen']) . "' ";
        
$query    .=    " ) " ;
        
                    
        
// In die Datenbank eintragen
        
$result    =    mysql_query$query );
        
        if ( ! 
$result )
        {
        die(
"Konnte den Datensatz nicht eintragen: " mysql_error() );
        }
       
        
        
// Wechsel auf Vorschau
        
header("Location: tnx.php");
        die;
        
    }
    
    
    
    }



</script>
<!-- <form method="POST" action="phpmailer/phpmailer-fe.php" style="color:#FFCC00; font-weight:bold">-->


<span class="errormessage">
    <?php
        
if ( $error_msg != "")
        
        {
        
        echo 
$error_msg;
        
        }
    
?>
    </span>

    <span style="color:#FFCC00" align="center">
     
<h1>KONTAKT2</h1>

<h2>Bitte nehmen Sie &uuml;ber folgendes Formular Kontakt zu mir auf.</h2>
<h3>Durch die serverseitige Verarbeitung des Formulars, wird der Versuch Dritter unterbunden auf sensible Daten zuzugreifen. </h3>
<br /><br />


<form action="<?php echo $_POST["PHP_SELF"]; ?>" method="POST" >
 <input type="hidden" value="kontakt2.html" name="referer">
  <table style="color:#FFCC00; font-weight:bold;">
  
    </span>
  
  <tr>
    <td style="font-weight:bold;">* = Eingabe erforderlich</td><td> </td>
  </tr>
  <tr>
    <td>Vorname*:</td><td> <input type="text" name="Vorname" value="<?php echo htmlspecialchars($_POST['Vorname']); ?>" size="40" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
  </tr>
  <tr>
    <td>Zuname*:</td><td> <input type="text" name="Zuname" value="<?php echo htmlspecialchars($_POST['Zuname']); ?>" size="40" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
  </tr>
  <tr>
    <td>Adresse:</td><td> <input type="text" name="frmAdresse" value="<?php echo htmlspecialchars($_POST['frmAdresse']); ?>" size="80" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
  </tr>
  <tr>
    <td>PLZ:</td><td> <input type="text" name="frmPLZ" value="<?php echo htmlspecialchars($_POST['frmPLZ']); ?>" size="20" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
  </tr>
  <tr>
    <td>Ort:</td><td> <input type="text" name="frmOrt" value="<?php echo htmlspecialchars($_POST['frmOrt']); ?>" size="40" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
  </tr>
  <tr>
    <td>Telefonnummer:</td><td> <input type="text" name="frmTelNr" value="<?php echo htmlspecialchars($_POST['frmTelNr']); ?>" size="40" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
  </tr>
  <tr>
    <td>Email*:</td><td> <input type="text" name="email" value="<?php echo htmlspecialchars$_POST['email']); ?>" size="40" style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></td>
  </tr>
  <tr>
    <td>Anliegen*:</td><td> <textarea rows="4" name="Anliegen" value="<?php echo htmlspecialchars($_POST['Anliegen']); ?>" cols="40"style="font-weight:bold; background-color:#FFCC00; border-bottom-color:#FFDF00 ; border-right-color:#FFDF00"></textarea></td>
  </tr>
  <tr>
  <td align="left" width="10%"><input type="hidden" name="do" value="insert"></td>
  </tr>
  </table>
  Enter security code:<br />
<input type="text" name="sicherheitscode" size="5"><br />
<br />
Sollten Sie den Code nicht lesen k&ouml;nnen, dr&uuml;cken sie in ihrem Browser auf &quot;reload&quot um ihre Eingaben zu behalten und einen anderen Code angezeigt zu bekommen.<br />
  <p><input type="submit" value="Absenden" name="submit"><input type="reset" value="Reset" name="B2"></p>
  <img src="../captcha/captcha.php" border="0" title="Sicherheitscode"><br />
  
 <br />
    </form>

Liebe Grüße
phpels
phpels ist offline  
Alt 30.11.2008, 19:17  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Schon ganz gut, oder? Mal so beim Rüberschauen jedenfalls.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 01.12.2008, 00:16  
Benutzer
 
Registriert seit: 25.10.2008
Beiträge: 50
phpels befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Schon ganz gut, oder? Mal so beim Rüberschauen jedenfalls.
Na das ging ja schneller/einfacher als ich dachte, stehe aber damit vor dem nächsten Schritt.

Das ist die Ausgabe auf einer Vorschau - Seite.
Da stellt sich jetzt natürlich auch die Frage welche Sicherheitsaspekte ich da übersehe und vor allem, wie ich auf 2 unterschiedliche Situationen reagiere...

Meine "Lösung" bisher ist das Anzeigen des letzten Datensatzes aus der Datenbank , welcher ja jener des eingebenden users sein müsste und ein Formular mit lauter hidden - Feldern, die ebenfalls mit diesen Daten befüllt werden.
Wenn der user das hidden - Formular abschickt, bekomme ich via phpmailer-fe eine email zugesandt.

...wobei mir der Fall, dass der user die Daten NICHT bestätigen möchte Kopfzerbrechen bereitet. Da stoße ich auf die Schwierigkeit nur EINE Formular - action exekutieren zu können und das ist jene, die die Daten an den mailer sendet.
Bei jeder anderen Denkmöglichkeit, z.b. eine Checkbox mit bestätigen oder verwerfen der Daten müsste ich ja in Abhängigkeit von z.b. der checkbox, beim submit dem Formular eine andere action zuweisen ... keine Ahnung wie das gehen soll ...

Die Bestätigungsseite sieht so aus :

PHP-Code:
<?php
    
include("ikenndifunctions.inc.php");

    
mysqlconnect();
    
    
$query    =    "SELECT * FROM ikenndi ORDER BY id DESC LIMIT 1 ";
    
    
$result    =    mysql_query$query );
    
    if ( ! 
$result )
    {
        die(
"Konnte die Datens&auml;tze nicht auslesen");
    }

  
    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
                <title>Kontakt2</title>
                <link rel="stylesheet" type="text/css" href="gbuch/styles/lalstyle/stylesheet.css"</link>
        
            
    </head>

    <body>

<div id="headersection">
<a href="http://www.lustaufleben.at"><img src="gbuch/img/toplogo.png" border="0" /></a>
</div>
            ?>
        <table class="booktable">
            <tr class="header">
                <td colspan="3" width="100%">
                    <p class="maintitle">Vorschau ihrer Eingaben</p>
                </td>
            </tr>
            <tr class="seperator">
                <td width="20%">&nbsp;</td>
                <td width="50%">&nbsp;</td>
                <td width="30%">&nbsp;</td>
            </tr>

        </table>
        <p></p>
        <table class="booktable">
        <?php
                       $datensatz    
=    mysql_fetch_array$result );
        
?>
        
            
            <tr class="msgcolumn">    
                <td class="label_datfield" width="10%">Vorname</td>
                <td class="contentfield01"colspan="2" width="90%">
                    <p class="titel"><?php echo $datensatz["Vorname"]; ?></p>
                </td>
            </tr>
            <tr class="seperator">
                <td width="10%">&nbsp;</td>
                <td width="60%">&nbsp;</td>
                <td width="30%">&nbsp;</td>
            </tr>
            <tr class="msgcolumn">
                <td class="label_datfield" width="10%">Zuname</td>
                <td class="contentfield01"colspan="2" width="90%">
                    <p class="titel"><?php echo $datensatz["Zuname"]; ?></p>
                </td>
            </tr>
            <tr class="seperator">
                <td width="10%">&nbsp;</td>
                <td width="60%">&nbsp;</td>
                <td width="30%">&nbsp;</td>
            </tr>
            <tr class="msgcolumn">
                <td class="label_datfield" width="10%">Adresse</td>
                <td class="contentfield01"colspan="2" width="90%">
                    <p class="titel"><?php echo $datensatz["frmAdresse"]; ?></p>
                </td>
            </tr>
                    <tr class="seperator">
                <td width="10%">&nbsp;</td>
                <td width="60%">&nbsp;</td>
                <td width="30%">&nbsp;</td>
            </tr>
                    <tr class="msgcolumn">
                <td class="label_datfield" width="10%">PLZ</td>
                <td class="contentfield01"colspan="2" width="90%">
                    <p class="titel"><?php echo $datensatz["frmPLZ"]; ?></p>
                </td>
            </tr>
            <tr class="seperator">
                <td width="10%">&nbsp;</td>
                <td width="60%">&nbsp;</td>
                <td width="30%">&nbsp;</td>
            </tr>
            <tr class="msgcolumn">
                <td class="label_datfield" width="10%">Ort</td>
                <td class="contentfield01"colspan="2" width="90%">
                    <p class="titel"><?php echo $datensatz["frmOrt"]; ?></p>
                </td>
            </tr>
                    
                    <tr class="seperator">
                <td width="10%">&nbsp;</td>
                <td width="60%">&nbsp;</td>
                <td width="30%">&nbsp;</td>
            </tr>
                    
                    <tr class="msgcolumn">
                <td class="label_datfield" width="10%">Telefon</td>
                <td class="contentfield01"colspan="2" width="90%">
                    <p class="titel"><?php echo $datensatz["frmTelNr"]; ?></p>
                </td>
            </tr>
            <tr class="seperator">
                <td width="10%">&nbsp;</td>
                <td width="60%">&nbsp;</td>
                <td width="30%">&nbsp;</td>
            </tr>
            <tr class="msgcolumn">
                <td class="label_datfield" width="10%">email</td>
                <td class="contentfield01"colspan="2" width="90%">
                    <p class="titel"><?php echo $datensatz["email"]; ?></p>
                </td>
            </tr>
                    
                    <tr class="seperator">
                <td width="10%">&nbsp;</td>
                <td width="60%">&nbsp;</td>
                <td width="30%">&nbsp;</td>
            </tr>
                    
                        <tr class="msgcolumn">
                <td class="label_datfield" width="10%">Anliegen</td>
                <td class="contentfield01"colspan="2" width="90%">
                    <p class="titel"><?php echo $datensatz["Anliegen"]; ?></p>
                </td>
            </tr>
                    
            <tr class="seperator">
                <td width="10%">&nbsp;</td>
                <td width="60%">&nbsp;</td>
                <td width="30%">&nbsp;</td>
            </tr>
            <tr class="seperator">
                <td width="10%">&nbsp;</td>
                <td width="60%">&nbsp;</td>
                <td width="30%">&nbsp;</td>
            </tr>
            
        </table>
        
        
        <form method="POST" action="phpmailer/phpmailer-fe.php">
 <input type="hidden" value="kontakt2.html" name="referer">
  <table style="width:100%">
     <tr>

  </tr> 
  <tr>
  <input type="hidden" name="Vorname" value="<?php echo $datensatz['Vorname']; ?>"</td>
  </tr>
  <tr>
  <input type="hidden" name="Zuname" value="<?php echo $datensatz['Zuname']; ?>" </td>
  </tr>
  <tr>
  <td><input type="hidden" name="frmAdresse" value="<?php echo $datensatz['frmAdresse']; ?>"</td>
  </tr>
  <tr>
  <td><input type="hidden" name="frmPLZ" value="<?php echo $datensatz['frmPLZ']; ?>"</td>
  </tr>
  <tr>
  <td><input type="hidden" name="frmOrt" value="<?php echo $datensatz['frmOrt']; ?>"</td>
  </tr>
  <tr>
  <td><input type="hidden" name="frmTelNr" value="<?php echo $datensatz['frmTelNr']; ?>"</td>
  </tr>
  <tr>
  <td><input type="hidden" name="email" value="<?php echo $datensatz['email']; ?>"</td>
  </tr>
  <tr>
  <td><input type="hidden" name="Anliegen" value="<?php echo $datensatz['Anliegen']; ?>"</td>
  </tr>
  <tr>
  <td><input type="hidden" name="do" value="insert"></td>
  </tr>


<tr>
 <td><img src="phpmailer/worxturing.php"></td>
 </tr>
<tr>
 <td style="color:#FFCC00; font-weight:bold">Enter security code:</td>
 </tr>
 <tr>
<td><input name="WorxTuringTest" id="WorxTuringTest"></td>
</tr>
<tr>
<td style="color:#FFCC00">Sollten Sie den Code nicht lesen k&ouml;nnen, dr&uuml;cken sie in ihrem Browser auf &quot;reload&quot<br /> um ihre Eingaben zu behalten und einen anderen Code angezeigt zu bekommen.<br />
Das kleine 0 - Zeichen ist die Zahl 0</td>
</tr>
<tr>
 <td> <input type="submit" value="Submit" name="submit"> </td>
 </tr>
</table>
  
    </form>

    </body>

</html>
Vielen Dank für die vielen Hinweise und Hilfen die ich hier bekomme.

Liebe Grüße
phpels
phpels 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] header location krackmoe PHP Tipps 2008 10 30.07.2008 14:41
Krieg kein Objekt zurück auf includeter Seite NONNNNN PHP Tipps 2008 5 28.03.2008 19:25
DIVs auf "echte" 100% der Seite setzen? King2k HTML, Usability und Barrierefreiheit 3 07.12.2005 15:15
Cookies &amp;amp; Sessions. Seite funktioniert nur mit Reload PHP-Fortgeschrittene 4 18.09.2005 00:48
Header Location Suchmaschinentauglich? DonTermi Beitragsarchiv 5 16.08.2005 12:22
Nach Serverumzug funktioniert die Seite nicht mehr PHP Tipps 2005-2 33 28.06.2005 14:03
[Erledigt] Nach Serverumzug funktioniert die Seite nicht mehr PHP-Fortgeschrittene 1 26.06.2005 23:07
Nach Serverumzug funktioniert die Seite nicht mehr PHP-Fortgeschrittene 9 26.06.2005 23:04
Header Location aus Frame für die ganze Seite laden Plague PHP Tipps 2005 3 22.05.2005 16:06
zu anderer php.seite umlenken (ohne header, location:) PHP Tipps 2005 8 06.04.2005 09:42
DIVs visible -> hidden beim Laden der Seite HTML, Usability und Barrierefreiheit 2 03.03.2005 22:20
header (location: $var) PHP Tipps 2005 14 19.01.2005 10:37
Seite drucken ohne Header etc. andrew22 HTML, Usability und Barrierefreiheit 3 28.12.2004 13:52
Location String in printer friendly Seite mitgeben PHP Tipps 2004-2 14 09.12.2004 17:27
PhP seite funktioniert nicht auf Linux Server Server, Hosting und Workstations 10 01.09.2004 22:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
worxturing

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:32 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