2010-11-22 17 views
7

Arka plan: Bir kullanıcının auto_prepend_file olarak ayarlamak istediğim php sayfasını işlemeden önce geçerli bir oturumu olup olmadığını kontrol eden bir kod var. Ancak, kullanıcının oturum açmayı denediği sayfanın geçerli bir oturumda olmasını gerektirmemesi gerekiyor. Auto_prepend_file değerini dizin bazında ayarlayabilmek istiyorum.Php'nin dizin başına auto_prepend_file yönergesi nasıl ayarlanır?

Çevre: PHP 5.2.6m Apache 2, bir CGI olarak çalışmıyor mod_php olarak, Windows üzerinde (bu konularda) ve üzerinde tam kontrolü var bir makine (bir barındırılan ortam)

üzerinde kullanma Bir htaccess dosyası çıktı b/c mod_php kullanmıyorum. Ben auto_prepend_file ayarlamak için php.ini içinde değiştiremedim, sunucu bir iç hata atar. Ve ini_set(), auto_prepend_file değerini değiştirmeden önce oturum kontrol dosyasını zaten yükledi b/c çalışmıyor.

Mod_php/htaccess kullanmıyorsanız, auto_prepend_file dizin başına temelinde bir yol göremiyorum. Bir şey mi eksik? - CGI olarak çalıştırırken sadece bu doesnt iş gerçekleşen

<Directory "c:/wamp/www/dev/"> 
    Php_value auto_prepend_file c:/wamp/www/dev/prepend.php 
</Directory> 

EDIT:

+1

Hangi web sunucusu yazılımı kullanıyorsunuz: Sen ob_start() yöntemini kullanmak için başına ekleme PHP dosyası gerekir? – Gumbo

+0

@Gumbo iyi bir nokta ... sadece Apache 2 – CLJ

cevap

2

Kullanım .user.ini dosyaları: Eğer php.ini dosyasının bir kopyasını oluşturmak dizine koyun ve benzeri orada da başa ekleyin yönergesini koyarsanız çalışacaktır bir şey olsa bence . Automatically Include Files with PHP & Apacheapache direktifi ve PHP koduyla sonunda eklenecek bunu nasıl açıklamak:

http://php.net/manual/en/configuration.file.per-user.php

+1

Bu çok umut verici görünüyor ... – CLJ

+0

Şu anda php 5.2.6 çalıştırıyorum .... dang! – CLJ

+0

Eğer üzerinde kontrolünüz varsa, yükseltmeye değer. Aksi takdirde, ana Apache yapılandırma dosyalarını düzenlemeniz gerekir. – Matthew

5

Sen dosyalarını .htaccess kullanamazsınız ancak httpd.conf değişiklik yapma ve böyle bir şey yapabilir söz.

auto_prepend_file = c:/wamp/www/dev/prepend.php 
+0

demek için güncellendi Bu benim sistemimde benim için işe yaramadı ... çalışıyor olmalı? – CLJ

+0

benim için iyi çalışıyor, yerel pencerede test edildi – robjmills

+0

Makinemde bunun çalışmasını önlemek ne olabilir? Bu satırı koyduğumda apache'yi yeniden başlatırken bu hata mesajını alıyorum: Geçersiz komut 'Php_value', belki de yanlış yazılmış ya da sunucu konfigürasyonunda bulunmayan bir modül tarafından tanımlanmış – CLJ

0

denilen büyük bir öğretici vardır. Birincisi, outputted edilmeden önce sayfayı yakalamak için bir dosya tanımlamak ve istediğini ekleyin:

<?php 
{ 
    $script = <<<GA 
<script type="text/javascript"> 
    var _gaq = _gaq || []; 
    _gaq.push(['_setAccount', 'UA-xxxxxxxxx-y']); 
    _gaq.push(['_trackPageview']); 

    (function() { 
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
    })(); 
</script> 
GA; 
    $replace = array('</body>','</BODY>'); 
    $page = str_replace($replace, "{$script}\r</body>", $page); 
// $replace2 = array('</title>','</TITLE>'); 
// $page = str_replace($replace2, " - My Awesome Site</title>", $page); 
    return $page; 
} 
ob_start("appendToFile"); 
?> 

Sonra sanal makinenize Apache yönerge ekleyin.

<Directory "/path/to/folder"> 
    AddType application/x-httpd-php .html .htm 
    php_value auto_prepend_file /absolute/path/to/apache-prepend.php 
</Directory>