PHP eksik GET değişkenleri bir neden bulmak

4 Cevap php

How can you get the variables in URL to the next page in PHP?

Kullanıcı URL'de olduğunu

 http://localhost/codes/index.php?ask_question&email=masi@gmail.com&passhash_md5=202cb962ac59075b964b07152d234b70

Diye bir soru gönderir ve o değişkenler bazı bilinmeyen bir nedenle kendi değerlerini kaybetmiş aşağıdaki url gider.

http://localhost/codes/index.php?question_sent&email=&passhash_md5=

Aşağıdaki kodu * handle_a_new_question.php * kodudur.

 $result = pg_prepare($dbconn, "query77", "INSERT INTO questions
     (body, title, users_user_id)
     VALUES ($1, $2, $3);");
 $result = pg_execute($dbconn, "query77", array($body, $title, $user_id));

 if(isset($result)) {
     $header = ("Location: /codes/index.php?"                                                                                                                                                           
         . "question_sent"
         . "&"
         . "email="
         . $_GET['email']             // this seems to be correct to me
         . "&"
         . "passhash_md5="
         . $_GET['passhash_md5']      // this seems to be correct to me too
         );
     header($header);
  }

Do you see any mistake in the code?

4 Cevap

GET değişkenleri yerine oturum işleyicileri kullanarak deneyin. Bu benim bakış açım, kodunuzda birkaç tuş vuruşlarını eklese ama size headeache bir sürü kaydeder.

Form kodu nedir neye benziyor? sorun değil question_sent sayfa üzerinde, question_sent sayfaya yönlendiriyor sayfada.

Eğer gizli alanlarında veya formun eylem bu değişkenleri birlikte geçiyoruz, örneğin

<form method="post" action="index.php?question_sent&email=<?php echo $_GET['email']?>&passhash_md5=<?php echo $_GET['passhash_md5']?>">

veya gizli değişkenleri kullanıyor

<form method="post" action="index.php?question_sent">
   <input type="hidden" name="email" value="<?php echo $_GET['email']?>" />
   <input type="hidden" name="passhash_md5" value="<?php echo $_GET['passhashmd5']?>" />
   ...
</form>

Bu iki çalışması gerekir, çünkü ilk önce $ _GET sizi $ _POST bunları geri alabilirsiniz ikinci ur değişkenleri alabilirsiniz.

Eğer bir şans olduğunda da kullanıcı oturumları için, muhtemelen bir tanımlama kendi oturum açma bilgilerini saklamak gerekir, bu bir göz atın

http://www.tizag.com/phpT/phpcookies.php

Herhalde veri POST tarafından gönderilir. Yani bu gibi alınabilir:

$_POST['email']

BTW:

  1. (bu örnekte yapılmaz) yeniden yönlendirme yapmadan önce verileri sterilize unutmayın.
  2. Lütfen hash "tuz" unutma veya güvensiz olabilir.

Lütfen $ _GET yazdırın ve vars başlığı oluşturmak için önce boş olup olmadığını kontrol edin:

print_r($_GET);

veya deneyin

$_REQUEST['email']

yerine

$_GET['email']

Oh! ve eklemeyi unutmayın

exit();

sonra:

header($header);

Hiçbir geçerli $ sonuç varsa bir şey yaparsanız, örneğin:

 if(isset($result)) {
     $header = ("Location: /codes/index.php?"                                                                                                                                                           
         . "question_sent"
         . "&"
         . "email="
         . $_GET['email']             // this seems to be correct to me
         . "&"
         . "passhash_md5="
         . $_GET['passhash_md5']      // this seems to be correct to me too
         );
     header($header);
  }

  sendEmailToMe('FAILED!!');

$ Sonuç geçerli olsa bile "sendEmailToMe ('BAŞARISIZ!')", Idam edilebilir mümkündür.