Bir URL dizesi bakımı PHP değişkenleri

6 Cevap

Ben bir PHP geliştiricisi değilim, ama benim ekibi, iyilik yararlanabilirsiniz yüzden şu anda bir iç araç üzerinde hack ediyorum. Böylece gibi görünen bir dizin dosyası var:

require( ($loader_path = "../../loaderapi/") . "loader.php" );

Bu gibi kullanılır, $ loader_path loader.php dosya içinde değerini koruyacaktır.

Ancak, biz bu yüzden gibi bizim takımın sunucusundan bu API erişmek istiyorsanız:

require( ($loader_path = "http://remoteservername/loaderapi/") . "loader.php" );

Bu durumda $ loader_path değişkenin değerini korumak değildir. Ben bunu bir tam şişmiş URL olmak ile ilgisi vardır tahmin ediyorum, ama yanlış olabilir. Ben bu işi, ya da neden nasıl yapacağınız konusunda herhangi bir fikir ben bu şekilde yapamaz?

6 Cevap

Senin HTTP üzerinden bir PHP komut dosyası erişirken, bu komut yalnızca çıkış döndürülür. Yani komut bu uzak PHP script çıkışını değil, kaynağını yorumlamaya çalışacağım.

Dosya sistemi üzerinde bir bağlantı varsa, bunun yerine file://remoteservername/loaderapi/loader.php denemek isteyebilirsiniz.

Ikisi arasında gerçek bir fark olmamalıdır; ne yaptığınızı, $ loader_path tanımlayan loader.php bitiştirmek ve gerektirecek geçen olduğunu.

ANCAK: Eğer başarısız gerektiren bir senaryo işleme durdurmak hangi bir gerektiren kapsamında değişken tanımlarken.

'Include' ile 'ihtiyaç' değiştirmeyi deneyin ve değişken korur olmadığını görmek.

Ayrıca, bir windows makinede PHP sunucusu çalıştırıyorsanız, ve php sürüm daha az 4.3.0 ise, 'ihtiyaç' ne de uzak dosyaları işleyebilir 'include' unutmayın: http://us.php.net/manual/en/function.include.php

Daha önce belirtildiği gibi. Php php ayrıştırır bir uzak sunucuda yaşıyorsa Ayrıca, kodunu olsun, ama kodu işlemeye uzak sunucunun sonucu olmayacaktır. Sen. Txt dosyası olarak sunmak, ya da işlendiğinde, geçerli php çıktılar, php yazmak gerekecek.

Eğer iki satır bölerek denedim:

$loader_path = "http://remoteservername/loaderapi/";
require( $loader_path . "loader.php" );

Bir de bu şekilde okumak daha kolay.

Sadece 3 satır her şeyi koyarak okuma kodu basitleştirmek:

$loader_path = "http://remoteservername/loaderapi/";
$page = "loader.php";
require($loader_path . $page );

Çok daha net ve çalışır.

neden sadece gerektiren açıklamada yukarıda koymak değil? daha kolay okumak da olur.

<?php
  $loader_path = "../../folderName/"
  require($loader_path . "filename")
 ?>

HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR HAYIR!

Uzaktan dosya dahil kötü bir fikir, sen kadar açabilirsiniz the büyük güvenlik açıkları muhtemelen biridir. Hatta dahili bir araç için bu kabul edilebilir değil, hatta sadece tamamen kötü alışkanlıkları katkı için eğer.

PHP by default disables this behavior, ve gerçekleştirmek için yeteneğine sahip geniş bir itme var, bir (bu yetenek için hiçbir zorlayıcı neden yoktur gibi) completely PHP elimden bir URL içerir.

Eğer paylaşılan kaynakları yüklemek istiyorsanız, (olduğu gibi, http ftp, bir şey ama file:// kullanmayın) veya paylaşılan bir dosya sistemi sürücüsü geçmesi daha henüz bir sürüm kontrol sistemi ile loader.php kopyalarını dağıtmak. Tek bir dosya kaynaktan yükleme gelecekte sorunları size açılır loader.php ve herkes başka kod kırma yazılmadan, yeni bir dev söylüyorlar.