Hiç düzgün kodunuzu biçimlendirmek için rahatsız ederseniz Jona, Söz 'başka' bir işlev içinde olduğunu görmek istiyorum, ve fonksiyon dışında $ kimlikleri ve $ ıdc tanımlayan ediyoruz. Eğer explicity işlevi içinde globalleri olarak tanımlamak sürece PHP, (.. vb $ _GET, $ _POST, gibi süper globalleri hariç) küresel değişkenler işlevlerin içinde görünmez, unutmayın.
global $idc, $idc;
ekle ilk işlev tanımında hattı ve sizin () düzgün çalışmaya başlayacak eğer.
İzleyen:
Sizin kodu hala iğrenç biçimlendirilmiş ve çok sakat olduğunu. Bu atın:
isset($_GET['ids'])?$ids=$_GET['ids']:null;
Bir Trinary operatörü kullanarak, ama her yerde sonuçlarını atama, ve bir atama yapmak için 'gerçek' koşulunu kullanarak değiliz. Bu çirkin kesmek. Bu gibi yazılmalıdır:
$ids = isset($_GET['ids']) ? $_GET['ids'] : null;
Hiçbir $_GET['ids']
varsa bu şekilde $ids
set null olacaktır. Hangi null yerine diğer bazı varsayılan değer atıyorsanız gerçeğini getiriyor. Gerçekten hiç $_GET['ids']
varsa, o zaman bu:
$idx = $_GET['ids'];
PHP otomatik olarak sağ tarafı yok durumlarda null atar gibi, aynı çalışacak. Daha sonra bir SQL sorgusunda kullanmadan konum beri Tabii ki, yine de, bu değeri sterilize etmek zorunda. Bu gibi bırakarak sadece SQL enjeksiyon saldırıları ve diğer ihlalleri her türlü davet edecektir.
Bunun ötesinde, hala $ids
ve ShowCart () fonksiyonu $idc
DIŞ yaratıyoruz. Gibi $ids
ve $idc
işlev içinde otomatik olarak bunları küresel olarak ilan ettik beri, null değerleri ile oluşturulur olacaktır. Ben şimdi size bu ne anlama geldiğini hiçbir fikrim yok, bu yüzden bu kod parçası denemek açık olduğunu düşünüyorum:
<?php
$var = 'Here I am!';
function showVar() {
echo "Within showVar(), var is set to: $var\n";
}
function workingShowVar() {
global $var;
echo "Within workingShowVar(), var is equal to: $var\n";
}
showVar();
workingShowVar();
Bunu çalıştırmak, bu kodu kopyala / yapıştır varsa, şu çıktıyı görürsünüz:
Within showVar(), var is set to:
Within workingShowVar(), var is set to: Here I am!
Her iki işlev de aynı olduğunu fark, except global
bildirimi için. Eğer farkı anlamaya varsa, o zaman aşağıdaki gibi ShowCart()
işlevini yeniden yazmak gerekiyor fark edeceksiniz:
function ShowCart() {
global $ids, $idc;
// rest of your code here
}