Başka bir php sayfasından veri geçirmeden çalışmıyor - neden?

5 Cevap

Burada Sinirli php acemi ...

Ben abp.php için ab.php dan BillTo veya shipto ya bir "tür" değer geçmek için çalışıyorum.

ab.php pasajı:

<?php
echo '<a href="' . tep_href_link(FILENAME_ABP, 'edit=' . $bill_address['address_book_id'] . '&type=billto', 'SSL') . '">' . 
  tep_image_button('small_edit.gif', SMALL_IMAGE_BUTTON_EDIT) .
'</a>';
?>

This does add the &type=billto to the end of the url. It looks like this: www.mydomain.com/abp.php?edit=408&type=billto&id=4a6524d

abp.php pasajı:

if ($HTTP_GET_VARS['type'] == 'billto') {
  then it does a db update...

Güncelleme yapılmaz çünkü eğer (ben ne söyleyebilirim) olsa döndürür false.

Ben de $ yerine HTTP_GET_VARS dolar _GET denedim.

Abp.php kod kullanıcı düğmeyi tıklattığında kadar sonra idam değil, çünkü değerini kontrol etmek yankılanırken kullanamazsınız, ama ben url türünü görebilirsiniz, böylece yürütme değil neden emin değilim .

Gerçekten bazı yön kullanabilirsiniz ... ben değiştirmek gerekiyor, ya da daha fazla sorun giderme için nasıl hatta sadece öneri olsun. Ben şu anda büyük bir öğrenme eğrisi ortasındayım. Teşekkürler!

edit: Sorry, I just realized I left out that after the db update the user goes back to ab.php. So the whole workflow is this:

User goes to ab.php. User clicks link to go to abp.php. User changes data on abp.php. User clicks button on abp.php. Update to db is executed and user is sent back to ab.php.

5 Cevap

Because the code in abp.php isn't executed until after the user clicks a button, I can't use echos to check the value
Neden olmasın?

echo '<pre>Debug: $_GET=', htmlspecialchars(var_export($_GET, true)), "</pre>\n";
echo '<pre>Debug: billto===$_GET[type] = ', 'billto'===$_GET['type'] ? 'true':'false', "</pre>\n";
if ( 'billto'===$_GET['type'] ) {
  ...

edit: Ayrıca ilginizi olabilir netbeans and its php module:

"Xdebug kullanarak hata ayıklama PHP kodu:. Siz, yerel değişkenleri incelemek saatler set, kesme noktası ayarlamak ve canlı kodu değerlendirmek bildirimleri, türleri ve kısayolları ve köprü bağlantıları için Git kullanarak dosyalara gidin."

Böyle bir şey deneyin

if ($_GET['type'] == 'billto') {
  die("got to here, type must == billto");

this will prove that your if statement is working or not, it may be that the update part is not working

Eğer deyimi önce - deneyin

var_dump($_GET);

Ve 'BillTo' $ _GET dizi içinde yer olduğundan emin olun. Eğer debuger kurulum var ise tabii ki, size $ _GET dizinin değerini izlemek mümkün olmalıdır

ya da deneyin:

var_dump($_REQUEST);

Ikinci sayfasının URL'sini kontrol edin, doğru biçimindedir? Bir olurdu eğer göndermekten kod parçacığını, ben bilmiyorum? soru işaretinden sonra. Ayrıca kod olması gerektiği gibi çalışıp çalışmadığını görmek için yönlendirme devre dışı bırakmayı deneyin.

Bir diğer şey bağlantı HTML içine koymak, sonra ilk olarak bir değişkene yeni url koymak isteyebilirsiniz olduğunu. Daha az etkili, ama okumak ve hata ayıklama için kod kolaylaştırır.

Hata raporlama açmayı deneyin, senin php script başında bu yer

error_reporting ( E_ALL | E_STRICT)

PHP yok bir dizi yazım hataları ve erişim simgeler çok hoşgörülü olduğunu; sıkı uygulanması ve tüm hataları rapor ederek bu durumlarda yakalamak mümkün olacaktır.

Eğer çıkış göremiyorsanız, bu deneyin:

function log_error($no,$msg,$file,$line)
{

    $errorMessage = "Error no $no: $msg in $file at line number $line";

    file_put_contents("errors_paypal.txt",$errorMessage."\n\n",FILE_APPEND);    
}

set_error_handler('log_error');

Sen yazılacak günlük dosyası için bazı dosya izinlerini ayarlamak gerekebilir.

Tabii ki, çok Netbeans'ı ve hata ayıklama modülü alabilirsiniz.