PHP $ _GET ve $ _POST tanımsız sorun

5 Cevap php

Ben bu basit bir sorun varsa ben özür PHP yeniyim ...

Ben başka bir sunucudan PHP sitesini hareket ediyorum. Kısa açık tag "On" açık ile yeni sunucu, IIS 7.0, PHP 5.2.1 ve (Ben sadece kod verildi) özgün sunucu nasıl set-up bilmiyorum.

Aşağıdaki sayfalardan birinde kod ilk bölümü:

<?
ob_start();
session_start();

if($_GET['confirm'] == 13 || $_GET['confirm'] == 14 || $_GET['confirm'] == 15 || $_GET['confirm'] == 16) 
{
    include("test/query/test_query.php");
}
?>

Bu sayfa çalıştırıldığında, aşağıdaki hata her zaman gösterilir:

PHP Notice: Undefined index: [dosya konumu] onaylamak hattı 6 php.

Ayrıca, kullanıcılar (standart bir HTML sayfası) ana sayfasına yönlendiriliyorsunuz bu sayfaya erişmek. Düzgün gidilen tam URL şudur:

http://www.%5Bsite%5D.com/test.php#login

Hata atılır neden ... anlıyorum. Ne ben anlamıyorum bu özgün sunucuda olduğu gibi bu kod hiç işe yarayabilir nasıl. Ben bir yapılandırma ayarı eksik olabilir?

* Bu aynı sorun, tüm sitesi üzerinden yerlerde onlarca olur. Bu sorunun sadece bir özel durum.

5 Cevap

Ben okumak için optimize kod öneririm:

if (isset($_GET['confirm']) && ($_GET['confirm'] >= 13 && $_GET['confirm'] <= 16))

Ve ben tamamen Josh'un önerisine katılıyorum.

Hiçbir dizin $ _GET ['confirm'] olduğundan, PHP tanımsız bir dizin bakıyorsun bir haber atar. Yeni sunucu php.ini veya pageloads üzerinde çalışan bazı yapılandırma dosyasında veya bootstrap ya, bir yerde error_reporting set E_NOTICE bayrağı vardır çünkü bildirimi görüntülenir ediliyor.

Php manuel, E_NOTICE: ". Run-time ilan komut bir hataya sebep olabilecek bir şey ile karşılaştığını gösterir, ama aynı zamanda bir komut dosyası çalıştıran normal ders olabilirdi."

Eğer onlar hakkında endişeli değilseniz bildirimleri kapatmayı deneyin, ya da sorunlar olabilir yerleri izini bunları kullanabilir ya.

Deftere kod için, kolay bir düzeltme için koşullu değiştirmek olacaktır

if(isset($_GET['confirm']) && <list of OR conditions>)

PHP hayır 'confirm' dizin varsa koşullu değerlendirilmesi kefil bu şekilde.

confirm sorgu dizesi değişkeni ayarlanacak görünmüyor çünkü bu, sizin gibi kontrol edebilirsiniz:

ini_set('display_errors', true);
error_reporting(E_ALL);

var_dump($_GET['confirm']);

isset() bir işlevdir. Döndürür "true" değişken var ve "false" değilse de. Genellikle, insanlar $_GET veya $_POST Eğer sitede başka bir sayfaya gönderilen konum belirlemek için gibi bir süper küreseli ile birlikte kullanın - bu dayalı farklı eylemler oluşturmak için olanak sağlar kullanıcı geliyor ve hangi verilerin birlikte etiketleme nerede. Ayrıca OP oluyor gibi henüz tanımlanmış değil değişkenleri kullanmak için çalışırken hataları önler. Peki yerine iki farklı. Php dosyalarını yazmak için gerek ve yanlış birine kullanıcı gönderme endişesi, tek bir sayfada hepsini yapabilirsiniz.

Jay, I'd be careful about your usage of some of these calls. <?php is more likely to work than <? . I've heard session_start() should be the very first thing set to the browser or it can cause header issues. And yes, you need to have a variable declared before you use it - if you're not typing in [file].php?confirm=[some number] as your URL, your page will break unless you amend it to allow for breaks.