HTML / PHP form

6 Cevap php

I am trying to code an all in one HTML/PHP contact from with error checking. When I load this file in my browser there is not HTML. I am a newb php programmer so most likely forgot something pretty obvious.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>All In One Feedback Form</title>
</head>

<body>


<?
$form_block = "
<input type=\"hidden\" name=\"op\" value=\"ds\">
<form method=\"post\" action=\"$server[PHP_SELF]\">
<p>Your name<br />
<input name=\"sender_name\" type=\"text\" size=30 value=\"$_POST[sender_name]\" /></p>
<p>Email<br  />
<input name=\"sender_email\" type=\"text\" size=30 value=\"$_POST[sender_email]\"/></p>
<p>Message<br />
<textarea name=\"message\" cols=30 rows=5 value=\"$_POST[message]\"></textarea></p>
<input name=\"submit\" type=\"submit\" value=\"Send This Form\" />

</form>";

if ($_POST[op] != "ds") {
 //they see this form
 echo "$form_block";

} else if ($_POST[op] == "ds") {


 if ($_POST[sender_name] == "") {
  $name_err = "Please enter your name<br>";
  $send = "no";
}

 if ($_POST[sender_email] == "ds") {
  $email_err = "Please enter your email<br>";
  $send = "no";
}

 if ($_POST[message] == "ds") {
  $message_err = "please enter message<br>";
  $send = "no";
}

 if ($send != "no") {
  //its ok to send
  $to = "jack@xxxxxxx.com.au";
  $subject = "All in one web site feed back";
  $mailheaders = "From: website <some email address@hhhh.com> \n";
  $mailheaders .= "Reply-To: $_POST[sender_email]\n";
  $msg = "Email sent from this site www.ccccc.com\n";
  $msg .= "Senders name: $_POST[senders_name]\n";
  $msg .= "Sender's E-Mail: $_POST[sender_email]\n";
  $msg .= "Message: $_POST[message]\n\n";
  mail($to, $subject, $msg, $mailheaders);

  echo "<p>Mail has been sent</p>";
}

else if ($send == "no") {
 echo "$name_err";
 echo "$email_err";
 echo "$message_err";
 echo "$form_block";
}

}

?>

</body>
</html>

Bilginize PHP 6 Hızlı ve Kolay Çar Geliştirme adlı bir kitaptan örnek çalışıyorum

GÜNCELLEME!

Ben görünümü kaynak aracılığıyla görmek kod budur.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>All In One Feedback Form</title>
</head>

<body>



<input type="hidden" name="op" value="ds">
<form method="post" action="">
<p>Your name<br />
<input name="sender_name" type="text" size=30 value="" /></p>

<p>Email<br  />
<input name="sender_email" type="text" size=30 value=""/></p>
<p>Message<br />
<textarea name="message" cols=30 rows=5 value=""></textarea></p>
<input name="submit" type="submit" value="Send This Form" />

</form></body>
</html>

6 Cevap

Aşağıdaki gibi php ile html kullanabilirsiniz

<?php if ($_POST[op] != "ds") {  ?>

<input type="hidden" name="op" value="ds">
<form method="post\" action=\"$server[PHP_SELF]\">

/ * Buraya html kodu * /

</form>";

<php } else if ($_POST[op] == "ds") {  ?>...............

Etiketlerini geçmeyi deneyin

'<?' to: '<?php'

Geliştirme environnement böylece boş bir sayfa üretimi, kısa etiketleri tanımayabilir.

Eğer sayfanın kaynak kodunu eriştiğinizde, doctype / html / beden etiketlerini görüyorsunuz?

$ _POST Ve $ _SERVER Değişkenler bazılarına erişmek için çalışırken, bazı çizgiler bıraktı.

Örnek: $ _POST ['op'] ve $ _POST [op] bulunuyor

Ayrıca $ _SERVER [PHP_SELF] ve $ server [PHP_SELF]

( ! ) Notice: Undefined variable: server in /home/vidves/public_html/www01/test.php on line 14
Call Stack
#   Time    Memory  Function    Location
1   0.0011  111512  {main}( )   ../test.php:0

( ! ) Notice: Undefined index: sender_name in /home/vidves/public_html/www01/test.php on line 16
Call Stack
#   Time    Memory  Function    Location
1   0.0011  111512  {main}( )   ../test.php:0

( ! ) Notice: Undefined index: sender_email in /home/vidves/public_html/www01/test.php on line 18
Call Stack
#   Time    Memory  Function    Location
1   0.0011  111512  {main}( )   ../test.php:0

( ! ) Notice: Undefined index: message in /home/vidves/public_html/www01/test.php on line 20
Call Stack
#   Time    Memory  Function    Location
1   0.0011  111512  {main}( )   ../test.php:0

( ! ) Notice: Use of undefined constant op - assumed 'op' in /home/vidves/public_html/www01/test.php on line 25
Call Stack
#   Time    Memory  Function    Location
1   0.0011  111512  {main}( )   ../test.php:0

( ! ) Notice: Undefined index: op in /home/vidves/public_html/www01/test.php on line 25
Call Stack
#   Time    Memory  Function    Location
1   0.0011  111512  {main}( )   ../test.php:0

Found it. Your hidden input field is not inside the form tags and does not get sent when the form is submitted which does not trigger the rest of the PHP code.

Yani, yerine:

...
<input type=\"hidden\" name=\"op\" value=\"ds\">
<form method=\"post\" action=\"$server[PHP_SELF]\">
...

Yuvarlak ister takas ::

...
<form method=\"post\" action=\"$server[PHP_SELF]\">
<input type=\"hidden\" name=\"op\" value=\"ds\">
...

Çok yaramaz.

Bir üslup ipucu olarak, HEREDOC sözdizimi üzerinde okumak isteyebilirsiniz. Tüm kaçan olmadan form bina ve değişken atama yapabilirdi:

$form_block = <<<EOL
<input type="hidden" name="op" value="ds">
<form method="post" action="$_SERVER[PHP_SELF]">
<p>Your name<br />
<input name="sender_name" type="text" size=30 value="$_POST[sender_name]" /></p>
<p>Email<br  />
<input name="sender_email" type="text" size=30 value="$_POST[sender_email]"/></p>
<p>Message<br />
<textarea name="message" cols=30 rows=5 value="$_POST[message]"></textarea></p>
<input name="submit" type="submit" value="Send This Form" />
</form>
EOF;

Ayrıca (sender_name ve SENDER_EMAIL) gibi körü körüne forma kullanıcı tarafından sağlanan veri ekleme önemsiz cross-site-scripting saldırıları neden olabilir unutmayın. (: SENDER_NAME çift tırnak, ancak boş SENDER_EMAIL sol gibi) kullanıcı formu dolduran ve herhangi bir alandaki bir çift teklifi dahil, ancak bir form hatası başka bir yol olduysam ne olacağını düşünün. Çift tırnak forma sokulur ve erken giriş alanının "değer" özniteliği sonlandırır alır.

Bu azaltmak için, herhangi bir özel karakter kaçacak htmlspecialchars() ilk aracılığıyla forma eklenecektir bütün değerleri, geçmek.

Bazı sistemler dosya uzantıları hakkında bakım, dosya. Html veya *. Php * denir?

Bu *. Php php-motor tarafından ayrıştırılır ve daha sonra müşteriye ise *. Html sadece müşteriye gönderilen nadir değildir.