[GastForen Programmierung/Entwicklung PHP und MySQL Prob bei Formular

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Prob bei Formular

alpr
Beiträge gesamt: 15

4. Sep 2007, 15:49
Beitrag # 1 von 12
Bewertung:
(3315 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute,

bei diesem Script wird nie angezeigt wenn ich Einträge nicht eintrage, nur die AGB werden als nicht eingetragen angezeigt (als Testausgabe) wenn ich das Feld frei lasse.

Kann mir da jemand helfen?



<body>
<?php
if (isset ($_POST['submit'])) {
if (isset($_POST['name_site']) && !is_array($_POST['name_site'])) {
echo 'Name der Web-Site ist: ' . htmlspecialchars($_POST['name_site']) . '<br />';
} else {
echo 'Keine Web-Site eingetragen!<br />';
}



if (isset($_POST['url_site']) && !is_array($_POST['url_site'])) {
echo 'Link der Web-Site ist: ' . htmlspecialchars($_POST['url_site']) . '<br />';
} else {
echo 'Keine URL eingetragen!<br />';
}



if (isset($_POST['keywords_site']) && !is_array($_POST['keywords_site'])) {
echo 'Die Keywords sind: ' . htmlspecialchars($_POST['keywords_site']) . '<br />';
} else {
echo 'Keine Keywords eingetragen!<br />';
}



if (isset($_POST['beschreibung_site']) && !is_array($_POST['beschreibung_site'])) {
echo 'Die Beschreibung lautet: ' . htmlspecialchars($_POST['beschreibung_site']) . '<br />';
} else {
echo 'Keine Beschreibung eingetragen!<br />';
}



if (isset($_POST['email_user']) && !is_array($_POST['email_user'])) {
echo 'Ihre Email lautet: ' . htmlspecialchars($_POST['email_user']) . '<br />';
} else {
echo 'Keine Email eingetragen!<br />';
}



if (isset($_POST['agb']) && !is_array($_POST['agb'])) {
echo 'AGB akzeptiert? ' . htmlspecialchars($_POST['agb']) . '<br />';
} else {
echo 'AGB nicht akzeptiert!<br />';
}

}

?>


<form action="<?php echo htmlspecialchars ($_SERVER['PHP_SELF']); ?>" method="post">

<table width="800" border="0">

<tr>
<td width="295">Name der Web-Site<br />
(z.B.: i-found, das Suchportal) </td>
<td width="295"><label>
<input type="text" name="name_site" size="70" />
</label></td>
</tr>

<tr>
<td>URL der Web-Site<br />
(z.B.: www.i-found.de) </td>
<td><label>
<input type="text" name="url_site" size="70" />
</label></td>
</tr>

<tr>
<td>Suchw&ouml;rter f&uuml;r die Web-Site (max. 10 W&ouml;rter) <br />
(z.B.: suchmaschine, senioren, kinder...)</td>
<td><label>
<textarea name="keywords_site"></textarea>
</label></td>
</tr>

<tr>
<td>Beschreibung<br />
(beschreiben Sie kurz Ihre Web-Site) </td>
<td><label>
<textarea name="beschreibung_site" size="265"></textarea>
</label></td>
</tr>

<tr>
<td><p>Ihre Email Adresse<br />
(wird ben&ouml;tigt um Ihnen ein EMail zu schicken<br />
Sie bekommen dann ein Email von uns das Sie<br />
best&auml;tigen m&uuml;ssen, erst dann wird die Site vom<br />
Admin &uuml;berpr&uuml;ft und freigeschaltet .
</td>
<td><label>
<input type="text" name="email_user" size="70" />
</label></td>
</tr>

<tr>
<td><a href="agb.php" target="_blank">Bitte best&auml;tigen Sie die Bedingungen </a></td>
<td><label>
<input type="checkbox" name="agb" value="OK" />
<a href="agb.php" target="_blank">Bin mit AGBs einverstanden</a></label></td>
</tr>

<tr>
<td><label>

</label></td>
<td><label>
<input type="submit" name="submit" value="Senden" />
</label></td>
</tr>

</table>
</form>
</body>
</html>
X

Prob bei Formular

flobaer
Beiträge gesamt: 317

4. Sep 2007, 17:13
Beitrag # 2 von 12
Beitrag ID: #310995
Bewertung:
(3300 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo alpr,

so ganz spontan: Was willst du denn über !is_array($_POST['name_site']) rausfinden? Du hast ein Textinput. Also wenn du wissen willst, dass da nichts drin steht, musst die Abfrage so lauten:
Code
if (isset($_POST['name_site']) && $_POST['name_site']!="") 

Das sollte dann auch funktionieren.

Viele Grüße,
Florian


als Antwort auf: [#310975]

Prob bei Formular

alpr
Beiträge gesamt: 15

5. Sep 2007, 14:26
Beitrag # 3 von 12
Beitrag ID: #311126
Bewertung:
(3281 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

danke für deine schnelle Hilfe, ich hab das Problem lösen können.

Auf arrays habe ich überprüft, da ich später evtl. eine Mehrauswahl einfügen möchte und dadurch eine höhere Sicherheit habe, da so kein Angreifer ein Array php vormachen kann (so in etwa)

Jetzt hab ich eine andere Frage, vielleicht kannst du mir dabei auch helfen.

Ich möchte das bei einem nicht ausgefüllte Testfeld daneben ein roter Stern erscheint, so das der User das Feld sofort erkennt wo er nichts eingetragen hat.

Dafür würde ich diese Zeile gerne einfügen, nur weiß ich nicht wie und wo:
( echo '<span style="color:red">*</span>'; )
Ich habe natürlich versucht es in die "echo" Zeile einzutragen, aber ohne Erfolg.


<td><input type="text" name="name_site" value="<?php
if (isset($_POST['name_site']) && !is_array($_POST['name_site'])) {
echo htmlspecialchars($_POST['name_site']);
}
?>" /></td>

Kannst du oder jemand anderer mir da helfen?

Danke schon mal

Alex


als Antwort auf: [#310995]

Prob bei Formular

flobaer
Beiträge gesamt: 317

5. Sep 2007, 15:19
Beitrag # 4 von 12
Beitrag ID: #311141
Bewertung:
(3274 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
probier es mal so (ungetestet):
Code
if(isset($_POST['name_site']) && !is_array($_POST['name_site']) && $_POST['name_site'] !="") 
echo("<input type='text' name='name_site' value='".htmlspecialchars($_POST['name_site'])."' />");
else
echo("<span style='color:red;'>*</span><input type='text' name='name_site' />");


Viele Grüße,


als Antwort auf: [#311126]

Prob bei Formular

alpr
Beiträge gesamt: 15

5. Sep 2007, 16:05
Beitrag # 5 von 12
Beitrag ID: #311163
Bewertung:
(3266 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
danke, aber geht leider nicht.

Habe diesen Code genommen:
Code
        <td><input type="text" name="name_site" value="<?php 
if(isset($_POST['name_site']) && !is_array($_POST['name_site']) && $_POST['name_site'] !="")
echo("<input type='text' name='name_site' value='".htmlspecialchars($_POST['name_site'])."' />");
else
echo("<span style='color:red;'>*</span><input type='text' name='name_site' />");
?>"
/></td>


Er schreibt jetzt in das Textfeld diesen Text beim ausführen: <span style='color:red;'>*</span><input type='text' name='name_site' />

Gruß

Alex


als Antwort auf: [#311141]

Prob bei Formular

flobaer
Beiträge gesamt: 317

5. Sep 2007, 16:22
Beitrag # 6 von 12
Beitrag ID: #311173
Bewertung:
(3262 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ja, das hast du ihm (wer ist eigentlich er) ja auch gesagt. Versuch es mal so:
Code
<td> 
<?php
if(isset($_POST['name_site']) && !is_array($_POST['name_site']) && $_POST['name_site'] !="")
echo("<input type='text' name='name_site' value='".htmlspecialchars($_POST['name_site'])."' />");
else
echo("<span style='color:red;'>*</span><input type='text' name='name_site' />");
?>
</td>



als Antwort auf: [#311163]

Prob bei Formular

alpr
Beiträge gesamt: 15

5. Sep 2007, 16:31
Beitrag # 7 von 12
Beitrag ID: #311177
Bewertung:
(3260 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke,

er ist Fritz ;-) (gebe meinen Programmen immer Namen).

Danke jetzt geht es und eigentlich viel besser als ich es wollte, er zeigt jetzt sofort das rot * an, noch bevor er was gemacht hat, meinte eigentlich das es erst kommt wenn er es verschickt, aber so kann ich rotes * als Pflichtfelder angeben und wenn er es richtig ausfüllt sind die * weg.

Super, echt toll von dir, ist mein erstes Projekt das ich mache, da klappt noch nicht alles so wie es soll.

Gruß

Alex


als Antwort auf: [#311173]

Prob bei Formular

flobaer
Beiträge gesamt: 317

5. Sep 2007, 16:38
Beitrag # 8 von 12
Beitrag ID: #311178
Bewertung:
(3258 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Alex,

du musst natürlich noch eine Überprüfung machen, ob das Formular schon mal abgeschickt wurde. Dafür kannst du die eine Variable definieren, die auf false steht und nach dem Abschicken auf true geschaltet wird. Das könnte dann etwa so aussehen:
Code
$abgeschickt=false; 
if(isset($_POST['submit'])) $abgeschickt=true;

Bei der Ausgabe musst die dann entsprechend abfragen:
Code
<td>  
<?php
if(isset($_POST['name_site']) && !is_array($_POST['name_site']) && $_POST['name_site'] !="")
echo("<input type='text' name='name_site' value='".htmlspecialchars($_POST['name_site'])."' />");
else
{
if($abgeschickt)
echo("<span style='color:red;'>*</span>");
echo("<input type='text' name='name_site' />");
?>
</td>


Das sollte das dann lösen.

Viele Grüße,
Florian


als Antwort auf: [#311177]

Prob bei Formular

alpr
Beiträge gesamt: 15

5. Sep 2007, 16:58
Beitrag # 9 von 12
Beitrag ID: #311185
Bewertung:
(3253 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Florian,

danke für den Tip, werde mich so bald wie möglich drann machen.

Ist das, dass es nicht zweimal abgeschickt/eingetragen wird?

Ich habe mir für dieses Problem gedacht, das ich eine Datei habe, das Formular schreibt die aktuelle Zeit rein (in sec.) wenn es verschickt wird und wenn es noch mal verschickt wird (das gleiche) die Zeit in der Datei verglichen wird, da die Zeit im Formular dann wieder die gleich sein müsste (dachte ich mir), würde true/false ausgegeben und dann einfach nicht mehr verschickt/eingetragen.

Ich denke aber das deine Methode viel besser ist, meine scheint kompliziert zu sein und ich habe es mir nur mal so überlegt, kann ja nicht mal sagen ob meine Idee gehen würde.

Aber danke noch mal für deine Hilfe.

Gruß

Alex


als Antwort auf: [#311178]

Prob bei Formular

flobaer
Beiträge gesamt: 317

5. Sep 2007, 17:09
Beitrag # 10 von 12
Beitrag ID: #311187
Bewertung:
(3251 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Alex,

die Variable verhindert nicht, dass irgendwelche Datenbankeinträge doppelt gemacht werden, sondern sorgt nur dafür, dass die roten Sterne nicht ausgegeben werden bevor das Formular überhaupt abgeschickt wird.
Wenn du verhindern willst, dass Daten mehrfach eingetragen werden (das wäre zum Beispiel dann der Fall, wenn nach dem Eintragen der Daten der User die Seite über einen Reolad neu lädt) musst du das anders lösen. Der einfachste Weg wäre nach erfolgreichem Eintragen der Daten per header auf eine andere Seite zu springen. Du kannst aber auch eine Prozedur verwenden, die ähnlich funktiniert wie das, was du dir da ausgedacht hast. Das wäre dann aber schon wieder ein anderes Thema.

Viele Grüße,
Florian


als Antwort auf: [#311185]

Prob bei Formular

alpr
Beiträge gesamt: 15

5. Sep 2007, 17:23
Beitrag # 11 von 12
Beitrag ID: #311190
Bewertung:
(3249 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Florian,

danke, aber ich finde es gut wenn die Sterne gleich am Anfang da sind, so konnte ich auch schreiben "Bitte füllen Sie alle * Felder aus" oder so.

Aber danke, ich werde auch deine Idee in ein anderes Formular machen, dann hab ich es schon mal, man kann nie sagen was man mal braucht ;-) .

Das Problem mit dem Reolad werde ich erst mal selber versuchen, sollte ich es nicht schaffen, weiß ich ja in welchem Forum einem geholfen wird, Danke.

Gruß

Alex


als Antwort auf: [#311187]

Noch einfacher

Bitfilme
Beiträge gesamt: 264

5. Sep 2007, 18:20
Beitrag # 12 von 12
Beitrag ID: #311200
Bewertung:
(3234 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Noch einfacher:
Code
<td>  
<?php
if(isset($_POST['name_site']) && !is_array($_POST['name_site']) && $_POST['name_site'] !="")
echo("<input type='text' name='name_site' value='".htmlspecialchars($_POST['name_site'])."' />");
else
{
if(isset($_POST['submit']) && $_POST['submit'])
echo("<span style='color:red;'>*</span>");
echo("<input type='text' name='name_site' />");
?>
</td>



als Antwort auf: [#311178]
X