PHP nasıl sayfaları arasında veri geçmek?

5 Cevap php

Yani "sayfa1.php" bir Özetle ben bir html formundan oluşan bir hesap makinesi var, sonra php kodu girişi toplamları ve toplam fiyatını görüntüler. Fiyatının altında, o da onların iletişim bilgilerini girin ve formu onlar fiyatlandırma hesap makinesi "sayfa1.php" yapılan seçimleri göndererek üzerine yanı sıra olabilecek bir html formu içeren "sayfa2.php" için bir bağlantı görüntüler "sayfa2.php" ile ilgili iletişim bilgileri bana e-postayla ve bunlar ana sayfasına yönlendirilirsiniz.

Bana gönderilen e-postada, ben "sayfa2.php" den iletişim bilgileri alırsınız, ama "sayfa1.php" şey almıyorsunuz, yani değişkenleri doğru geçirilen almıyorsanız. Her sayfada PHP ek olarak, ben "sayfa1.php" konulu html formunda girilen verileri echo "sayfa2.php" konulu bir html biçiminde gizli değerleri kullanıyorum. Benim konulardan biri benim form "post" olduğunda ben $ _GET alan bir çift var olduğunu biliyoruz. Her $ _POST böylece onu değiştirmek Ancak, hesap makinesi artık çalışır. Ben bu kadar karmaşık olduğunu üzgünüm - Ben başkaları tarafından önerilen kod farklı parçacıkları ile tamamen bu koymak için çalıştı. "On üç" - "sayfa1.php" konulu formu "tek" adlı 13 alanlar vardır. Toplam gösterge 1-13 değerlerini $.

<?php
  $submit = $_GET['submit'];
  if($submit == "true")
  {
    $total = ($_POST['one'] + $_POST['two'] + $_POST['three'] + $_POST['four']  + 
    $_POST['five'] + $_POST['six'] + $_POST['seven'] + $_POST['eight']+ $_POST['nine'] + 
    $_POST['ten']+ $_POST['eleven'] + $_POST['twelve']+ $_POST['thirteen']); 
    echo  " Your Price is \$ " .number_format ($total, 2, '.', ','). "<BR>";
    echo ('">Get Your Project Started</a>');
  }
?>

İkinci form sayfa1.php gelen bilgi yankı gizli değerleri kullanır ve üç "name" adlı alanları, "e-posta" ve "ayrıntıları" vardır.

<?php
  $to = "jessica@designs.com";
  $message = "Pages:\t$_POST[one]\n";
  $message .= "Pages:\t$_POST[two]\n";
  $message .= "Pages:\t$_POST[three]\n";
  $message .= "Ecommerce:\t$_POST[four]\n";
  $message .= "No Ecommerce:\t$_POST[five]\n";
  $message .= "CMS:\t$_POST[six]\n";
  $message .= "No CMS:\t$_POST[seven]\n";
  $message .= "Audio or Video:\t$_POST[eight]\n";
  $message .= "Flash Intro:\t$_POST[nine]\n";
  $message .= "Image Gallery:\t$_POST[ten]\n";
  $message .= "Graphic Design or Logo:\t$_POST[eleven]\n";
  $message .= "Copy:\t$_POST[twelve]\n";
  $message .= "Images:\t$_POST[thirteen]\n";
  $message .= "Price Total:\t$_POST[total]\n";
  $message .= "Name:\t$_POST[name]\n";
  $message .= "Email:\t$_POST[email]\n";
  $message .= "\n";
  $message .= "\n";
  $message .= "Details:\t$_POST[details]\n";
  mail($to, $subject, $message, $headers) ;
  }
?>

Peki "sayfa1.php" ve "sayfa2.php" koymak doğru PHP olurdu? Maalesef kod herkes bana doğru yönde işaret olabilir, bu harika olurdu, böyle bir karmaşa.

5 Cevap

Eğer oturumda şeyler kaydetmek sürece PHP vatansız (sağ güvenli değil?)

Sen sayfa1.php tüm değerleri okumak ve bir sunucu tarafı devlet (oturum) veya bir istemci devlet (çerezler veya formda belki gizli alanlar) ya bunları saklamak sayfa2.php yapmak gerekir

Bu güvenli veya gizli herhangi istiyorsanız, o zaman sen de bütün bunlar göz önünde bulundurmanız gerekir. Anlattım hiçbir şey herhangi bir şekilde gizli ya da güvenli.

EDIT: buraya parametre olarak sayfa2.php için sayfa1.php değerleri gönderir sayfa1.php örneğidir. Siz de gizli alanlar, kurabiye veya oturumları ile yapabilirsiniz.

Ne hatırlamak önemlidir sayfa2.php sayfa1.php tamamen habersiz olduğunu ve bunu programlama oluşturan olabilir gibi değerlere alınamıyor. Her bir sayfa başlar ve tam bir web sayfasını görmek zaman hayat biter, yani değerlerini korumak için bazı ekstra hileler kullanmak zorunda. Bu hileler oturumları, çerezleri, form mesajlar, ya da alır vardır.

<html>
<head>
<title>Page 1</title>
</head>
<body>
<?php
//set defaults assuming the worst
$total = 0;
$one =0;
$two=0;

//verify we have that value in $__POST
if (isset($_POST['submit']))
{
    $submit = $_POST['submit'];
    //If it is true, try some math
    if($submit == "sub-total")
    	{
    		if (isset($_POST['one']))
    		{	
    			$one = $_POST['one'];
    			//Add checks to see if your values are numbers
    			if ( ! is_numeric($one)) { $one = 0;}
    		}

    		if (isset($_POST['two']))
    		{
    			$two = $_POST['two'];
    			if ( ! is_numeric($two)) { $two = 0;}
    		}
    		$total = $one + $two;
    		echo " Your Price is \$ " .number_format ($total, 2, '.', ','). "<BR>";
    	}
    if($submit == "submit" )
    {
    	//go to page two, with the total from page1.php passed as a $__GET value
    	header("Location: page2.php?total=".$total);
    }
}
?>
    <form method="post" action="page1.php?submit=true">
    	<input type="text" name="one" id="one" value="<?=$one?>"/>
    	<input type="text" name="two" id="two"  value="<?=$two?>"/>
    	<input type="submit" name="submit" value="sub-total" />
    	<input type="submit" name="submit" value="submit" />
    </form>
</body>
</html>

Sen $_REQUEST yerine $_GET veya $_POST kullanarak deneyebilirsiniz - her ikisi için de çalışıyor. Eğer 1. sayfada yayınlanan kendi değişkenleri ile 2. sayfadaki formu <input type='hidden' koyarsanız Ayrıca, sağ boyunca geçti almalısınız.

php sayfaları devlet yok, bu yüzden yayınlanmıştır değişkenleri almak zorunda, ve gizli giriş alanları yoluyla birlikte gönderebilirsiniz.

<input type="hidden".....

Ayrıca oturumları kullanabilirsiniz, ancak bana sorarsanız bu formları ile bunları kullanmak için biraz hackish olduğunu.

Bu HTML form değişkenleri PHP komut dosyası için geçmiş olsun nasıl method özelliğe bağlıdır.

page1.php herhangi bir yan etkisi yok gibi bu durumda, o sesler, ve sadece değerler geçer, böylece form page1.php method=get kullanması gerektiğini ve Bu alanları okur page2.php kod $_GET bunları bulabilirsiniz.

Üzerinde page2.php (muhtemelen) sunucu tarafında yan etkileri var, bu nedenle geri okuyabilirsiniz, method=post kullanmak gerekir $_POST Gönder butonuna sunucu tarafı.

Ayrıca, değerleri doğru geçirilirse page2.php ilk sayfayı doldurduktan sonra, görmek için HTML kaynağına bakabilirsiniz.

biraz geç cevap üzerine, evet, en iyi yolu, type=hidden diğerleri gibi zaten belirtmiştik kullanıyor.

sayfa1 gizli alanlar bunun hepsi "kaydeder" Sayfa2, için 'POST gönderir, böylece final (veya başka) sayfaya her şeyi birlikte gönderebilirsiniz.

ama daha da önemlisi, daha geniş bir konu olacak, why using pages at all bir formu bölmek için düşünüyor!

Burada bu konuyu dokunmadan için üzgünüm, ben sadece benim 2 sent vermek gibi hissettim.

don't page forms

Ben javascript kabul olmaz tarayıcılar ile and geriye uyumluluk sunucusu doğrulama gerekiyorsa öyle olacağını en iyi şey mümkün ve bunu yapmak için sadece iyi nedenler kadar belleği önlemek olduğunu söyleyebilirim.

use newer resources instead

düzen ve tasarım hem javascript kullanılarak elde edilebilir ve CSS, bu da içindir ikisi de olabilir. Eğer "sonraki basın", 1 dosyada dhtml ve tüm kullanmak için kullanıcı yok bile. sunucu doğrulama gerekiyor? ajax.

Eğer HTML çerçeveleri (muhtemelen olmamalı), bir tam sayfa yükleme hem de (bir yerden bir şekilde bilgi geçerken dikkat çekmek için kullanıyor ve programlamada daha fazla zaman alır, bir gereksiz ve gereksiz sunucu ve istemci yük kullanıldığı sürece başka).

ve o kadar yapılıyor ne durumunu kaydetmek için en iyi yolu olmaktan bulunuyor. verilmiş, bu kendi başına bir bütün karmaşık bir konudur, ama yine, ajax burada iyi olurdu.