• 25-08-2017, 07:45:32
    #1
    Merhaba Arkadaşlar

    Aşağıdaki kod satırlarını çalıştırdığımda çıkan tüm sonuçları düzenli bir şekilde veritabanına yazdırmak istiyorum fakat bu sonuçlardan veritabanına sadece bir tanesi yazdırılmaktadır ve geri kalanını yazdırmakta problem yaşıyorum

    Burdaki amaç tüm headerları veritabanına kaydetmektir.

    Not : PHP 7.0 Kullanıyorum

    Alıntı
        $headers = array();
    
        foreach($_SERVER as $key => $value) {
            if(strpos($key, 'HTTP_') === 0) {
                $headers = str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))));
                $topluheader = ($headers." : ". $i[$headers] = $value . "<br>");
    			$sonhali = strip_tags($topluheader);
            }
        }
    Yukarıdaki kod çalıştırıldığında veritabanına yazdırılan veri :

    Alıntı
    X-Forwarded-Proto : https
    Yazdırılmasını istediğim veriler :


    Home : /a/a/a/a
    Host : a.com
    User-Agent : Mozilla/5.0 (Windows NT 9.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0
    Accept : text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language : tr-TR,tr;q=0.8,en-US;q=0.5,en;q=0.3
    Accept-Encoding : gzip, deflate, br
    Connection : keep-alive
    Upgrade-Insecure-Requests : 1
    Cache-Control : max-age=0
    X-Forwarded-Proto : https
    Yukarıdaki gibi tüm sonuçları nasıl veritabanına yazdırabilirim ?

    Şimdiden yardımcı olan arakadaşlara Teşekkür Ediyorum
    İyi Forumlar.
  • 25-08-2017, 08:00:41
    #2
    apache_request_headers() işini çözmüyormu ?
  • 25-08-2017, 09:41:10
    #3
    Haymac adlı üyeden alıntı: mesajı görüntüle
    apache_request_headers() işini çözmüyormu ?
    Cevap için teşekkürler.

    Bugüne kadar apache_request_headers() kullanıyordum ve işimi çözüyordu fakat php 7'ye geçiş yaptığım için versiyon değişikliği sebebiyle NOTICE Undefined variable hatası vermeye başladı bende alternatifi olarak ilk yazıdaki kodları kullanmaya başladım

    PHP 7 öncesi kullandığım kodlar aşağıdadır.

    $headers = apache_request_headers();        
    foreach ($headers as $header => $value) { 
     $topluheader = $topluheader . "$header : $value"; 
     $sonhali = strip_tags($topluheader);
    
    }
    İyi Forumlar.
  • 25-08-2017, 09:45:23
    #4
    Tllgl adlı üyeden alıntı: mesajı görüntüle
    Cevap için teşekkürler.

    Bugüne kadar apache_request_headers() kullanıyordum ve işimi çözüyordu fakat php 7'ye geçiş yaptığım için versiyon değişikliği sebebiyle NOTICE Undefined variable hatası vermeye başladı bende alternatifi olarak ilk yazıdaki kodları kullanmaya başladım

    PHP 7 öncesi kullandığım kodlar aşağıdadır.

    $headers = apache_request_headers();        
    foreach ($headers as $header => $value) { 
     $topluheader = $topluheader . "$header : $value"; 
     $sonhali = strip_tags($topluheader);
    
    }
    İyi Forumlar.
    google da 'apache_request_headers alternative php7' yazmanız yeterliydi usta.

    https://stackoverflow.com/questions/...g-http-headers
  • 25-08-2017, 10:34:41
    #5
    Haymac adlı üyeden alıntı: mesajı görüntüle
    google da 'apache_request_headers alternative php7' yazmanız yeterliydi usta.

    https://stackoverflow.com/questions/...g-http-headers
    Bu attığınız yerdeki kaynağı gördüm ve denedim fakat malesef verileri istediğim gibi yazdıramadım Array to string conversion hatası almaktayım ve kod veritabanına sadece array yazısı yazdırmakta

    İyi Forumlar.
  • 25-08-2017, 15:53:24
    #6
    if( !function_exists('apache_request_headers') ) {
        function apache_request_headers() {
            $arh = array();
            $rx_http = '/\AHTTP_/';
    
            foreach($_SERVER as $key => $val) {
                if( preg_match($rx_http, $key) ) {
                    $arh_key = preg_replace($rx_http, '', $key);
                    $rx_matches = array();
               // do some nasty string manipulations to restore the original letter case
               // this should work in most cases
                    $rx_matches = explode('_', $arh_key);
    
                    if( count($rx_matches) > 0 and strlen($arh_key) > 2 ) {
                        foreach($rx_matches as $ak_key => $ak_val) {
                            $rx_matches[$ak_key] = ucfirst($ak_val);
                        }
    
                        $arh_key = implode('-', $rx_matches);
                    }
    
                    $arh[$arh_key] = $val;
                }
            }
    
            return( $arh );
        }
    }
    
    $headers = apache_request_headers();         
    foreach ($headers as $header => $value) {  
     $topluheader = $topluheader . "$header : $value";  
     $sonhali = strip_tags($topluheader); 
    }
  • 25-08-2017, 16:13:26
    #7
    Üyeliği durduruldu
    Yanlış anladıysam düzeltin lütfen,

    	function get_header():string {
    		$a = array();
    		$ca = '/\AHTTP_/';
    		foreach($_SERVER as $key => $val):
    				if(!preg_match($ca, $key)) continue;
    				$b = preg_replace($ca, '', $key);
    				$c = explode('_', $b);
    				if(count($c) <= 0 || strlen($b) <= 2) continue;
    				foreach($c as $t => $g)
    					$c[$t] = ucfirst($g);
    				$b = implode('-', $c) ?? $b;
    				$a[$b] = $val;
    		endforeach;
    		$output = implode(' ',array_map(function($l, $b) {return sprintf("%s='%s'", $b, $l);},$a,array_keys($a)));
    		return $output ?? null;	
    	}
    	$cad = get_header();
    	echo $cad;
    İstediğiniz bu değil mi ?