Hvordan får man den nødvendige attribut til input til at fungere i ældre versioner af IE? Så hvordan kan jeg blive bedt om at arbejde i ældre versioner af IE.

En af de mest sjove og nyttige funktioner i PHP er at inkludere en anden fil. For eksempel har en hjemmeside en topmenu, en bundmenu og imellem dem selve sideindholdet. Og for eksempel på 10 sider af siden bruges den nederste menu. På et tidspunkt skulle der laves ændringer i den. I html ville du manuelt foretage ændringer i hver enkelt fil, men php giver dig mulighed for betydeligt at forenkle arbejdet med webstedet! Koden til bundmenuen kan være indeholdt i en separat fil, og på hver af de 10 sider kan du blot inkludere denne separate fil! Det vil sige, at alle ændringer nu kun skal laves i filen med menuen, og på 10 andre vil den blive vist med ændringer.

Betydningen af ​​forbindelse i php på simpelt russisk sprog:

Fil 1.php
Topmenu

Fil 2.php
Nederste menu

eksempel.php-fil
Tilslut fil 1.php
Sideindhold
Tilslut fil 2.php

Som et resultat af at behandle filen example.php, vil den blive vist
Topmenu
Sideindhold
Nederste menu
Derfor, for at ændre noget i den nederste menu, skal du kun foretage ændringer i 2.php-filen

Sti til fil Filen er forbundet i henhold til den sti, der er angivet for filen. Der er to stimuligheder: relativ og absolut. Relativ - dette er en indikation af stien til den tilsluttede fil i forhold til filen med forbindelsesinstruktionerne. Absolut - angiver den fulde sti til den inkluderede fil.

PHP kode

// eksempel på en relativ sti
inkludere "inkluder/din_fil.php"; // filen er i mappen include, som er placeret i samme mappe som forbindelsesfilen

// eksempel på en absolut vej
inkludere $_SERVER["DOCUMENT_ROOT"]."/include/din_fil.php"; // $_SERVER["DOCUMENT_ROOT"] - angiver rodmappen på webstedet

include og include_onceinclude() er konstruktioner designet til at inkludere filer i PHP script kode under udførelse af PHP script. Ved behandling af koden erstattes instruktionen med indholdet af den vedhæftede fil. Jeg foreslår, at du ser på et eksempel med det samme.

Lad os se på, hvordan include virker ved at bruge to filer som et eksempel: index.php og text.php . For at gøre arbejdet nemmere, lad os antage, at de er placeret i samme mappe.

PHP-kode (index.php-fil)

Ekko "Almindelig tekst indeholdt i hovedfilen";
inkludere "text.php"; // inkludere indholdet af filen text.php

?>
PHP-kode (text.php-fil)

Ekko "Tekst indeholdt i den inkluderede fil";

?>
Resultatet af at køre filen index.php vil være:

Almindelig tekst indeholdt i hovedfilen
Tekst indeholdt i den medfølgende fil
Er det virkelig praktisk? Nu, ved at ændre indholdet i text.php-filen, vil resultatet af index.php være helt anderledes!

Lad os nu tale om en anden konstruktion - include_once. Det fungerer nøjagtigt på samme måde som include, først oprettet senere og i de tilfælde, hvor filen ikke kan medtages igen. For eksempel er du bange for, at du som følge af en fejl kan forbinde en fil 2 eller flere gange, hvilket vil påvirke, at siden ikke fungerer korrekt og modtager en tilsvarende fejlmeddelelse.

PHP kode

Include_once "text.php"; // filen text.php vil kun blive inkluderet én gang

// genforbindelser nedenfor vil ikke blive taget i betragtning og vist
// og det vil ikke forårsage, at der vises en fejlmeddelelse
include_once "text.php"; // intet vil ske

require og require_once. require og require_once-instruktionerne fungerer identisk med at inkludere og inkludere_en gang med undtagelse af kun én funktion - hvis den inkluderede fil ikke findes, vil scriptudførelsen blive stoppet (scriptet vil ikke længere blive læst), mens include og include_once simpelthen udskriv advarsel og fortsæt videre udførelse af scriptet Hvis include eller require ikke virker For at forstå årsagerne til, hvorfor include ikke virker, foreslår jeg at kontrollere alt trin for trin. Uanset hvor klare og overfladiske punkterne nedenfor kan være, så tjek alt fra begyndelsen

1. Tjek om din server og php fungerer, og om nogen php-kode på siden overhovedet virker
2. Kontroller, om inkluderingsfilen findes
3. Tjek om filnavnet og filtypenavnet er indtastet korrekt i forbindelsen
4. Sørg for, at den medfølgende php-fil faktisk er placeret på den adresse, du har angivet
5. Prøv ikke at angive en relativ sti, men en absolut sti (fuld sti til filen).

Eksempel PHP-kode

Inkluder "http://www.example.com/include/your_file.php";

// DOCUMENT_ROOT - angiver rodmappen for ressourcen
inkludere $_SERVER["DOCUMENT_ROOT"]."/include/din_fil.php";

6. Hvis din fil ikke forbinder, og der ikke vises nogen fejl, skal du oprette en .htaccess-fil med følgende indhold i mappen med den fil, du forbinder.

Php_flag display_errors Til
eller indsæt følgende linje i php-filen, før du opretter forbindelse

Fejlrapportering(E_ALL);
Begge indstillinger vil tvinge fejl til at blive vist

Tak for din opmærksomhed!

For enhver webudvikler er der i øjeblikket ikke noget mere alvorligt problem end fuld cross-browser-kompatibilitet af hans produkt. Dette er sandsynligvis en af ​​hovedopgaverne for en god specialist: at sikre, at hans hjemmeside altid vises korrekt i alle browsere.

Den påkrævede parameter, som nogle gange bruges til input, virker ikke i oldtidens IE, som simpelthen ikke kan efterlades sådan. Pensionerede brugere, der stadig bruger IE6, bør have samme brugervenlighed med dit websted som brugere af den seneste version af Google Chrome. Hvem, udover webudviklere, kan tage sig af dem.

Om det ømme punkt, om Internet Explorer

For normale browsere, som inkluderer Firefox, Opera og Google Chrome, er denne opgave relativt nem. Selv ældre versioner af disse browsere viser HTML-kode lige så godt, medmindre der selvfølgelig bruges nogle nye teknologier. Men for at opnå dette i browsere i Internet Explorer-familien kræves der ganske enkelt en herkulisk indsats.

Hver version af Internet Explorer-browseren har sin egen unikke dumhed. Det, der virker i IE6, fungerer muligvis ikke korrekt i IE7 og omvendt. Microsoft kunne ikke overvinde denne zoologiske have, selv i den nyeste version af sin browser.

Jeg kan ikke forstå, hvorfor browserudviklere ikke bare kan åbne og læse W3C-standarderne for webstedsopbygning.

Derfor skal jeg som webudvikler fungere som et slags "lag" mellem lunefulde browsere og besøgende på siden, der kræver viden og spektakel. Og det er fantastisk, at webudviklere har formået at gøre dette indtil videre.

Så hvordan kan jeg blive bedt om at arbejde i ældre versioner af IE?

JS kommer os til hjælp. Tidligere kunne jeg ikke holde det ud, men nu ser jeg ikke en videre vej uden den i det "korrekte" WEB's vidde.

Jeg har ikke selv opfundet den nedenstående løsning, men tog den fra en borgerlig blog. Da jeg er grådig og bloggen er borgerlig, vil jeg ikke give et link til den.

Funktionen fnCheckFields() vil være ansvarlig for alt. Placer JS-kode på dit websted:

function fnCheckFields(form_obj)( var error_msg = "Udfyld venligst alle obligatoriske felter."; var is_error = false; for (var i = 0; form_obj_elem = form_obj.elements[i]; i++) if (form_obj_elem.type "input" ||. form_obj_elem.type "text") if (form_obj_elem.getAttribute("påkrævet") && !form_obj_elem.value) is_error = true if (er_error) alert(error_msg);

Normalt anbefales det at placere det mellem HEAD html tags i begyndelsen af ​​siden, men jeg vil stadig anbefale at placere det helt nederst på siden før det afsluttende BODY tag. På denne måde har JS mindre indflydelse på sideindlæsningshastigheden.

Indtastningsvinduet, hvor den nødvendige parameter skal indtastes, skal se sådan ud i html:

Dette script fungerer meget enkelt: efter at have klikket på knappen Send, kontrollerer scriptet alle input for tilstedeværelsen af ​​den nødvendige parameter, og hvis det finder det, ser det på den indtastede værdi af dette felt i overensstemmelse hermed. Hvis der ikke indtastes noget i et sådant input, vises et advarselsvindue om behovet for input. Derfor sendes dataene ikke nogen steder.

Det er også fantastisk, at hvis du har en normal browser, der allerede har lært at forstå denne parameter som forventet, vil et sådant advarselsvindue ikke dukke op, og standardværktøjerne til at behandle den nødvendige parameter til din browser vil fungere.

Del på sociale medier netværk

0

Jeg er ved at bygge en lille PHP MVC-ramme, og her er min struktur

/app /controllere /models /views /templates /config /config.php /core /Controller.php /Router.php /init.php /index.php

mapper Inde i index.php, som er den forreste controller, jeg skal kræve denne kode fra init.php /app/core/init.php

app/core/init.php

init.php kræver hver basiscontroller og Classe i /core-mappen, inklusive controller.php og router.php, og her instansierer index.php også klasserne

Alle ting fungerer fint for nu, da jeg har testet det ved at oprette en konstruktør i både controller.php og router.php, så koden i disse to filer bliver sådan her

app/core/controller.php

applikation/kerne/router. php

inde i index.php ekkoer det OK! da klasserne er oprettet korrekt, men problemet er når jeg vil inkludere config.php som er i /app/config/config.php fra Controller.php som er i /app/core/Controller.php med denne kode

Hver gang jeg gør dette returnerer den denne fejl

Controller::include(../config/config.php) : kunne ikke åbne stream: Ingen sådan fil eller mappe i C:\AppServ\www\myapp\app\core\Controller.php på linje 6

Controller::include() : Mislykket åbning af "../config/config.php" for inkludering (include_path=".;C:\php5\pear") i C:\AppServ\www\myapp\app\core\Controller .php på linje 6

Jeg tror, ​​jeg brugte den korrekte placering, jeg arbejder med /app/core/Controller.php og kræver ikke /app/config/config.php. Jeg vender tilbage til en mappe ved hjælp af ../

Hvorfor kan jeg så ikke gøre krav på filen?

  • 3 svar
  • Sortering:

    Aktivitet

2

Fra min personlige erfaring vil brug af relative filstier føre til hovedpine på et tidspunkt. Så jeg plejer at bruge den fulde sti til filen. Fordelen ved dette er også, at det er lidt hurtigere. Så hvis du på et tidspunkt får en inkluderingsfejl, er det nemmere at finde fejlen, da du har hele stien tilgængelig.

For at kunne lave absolutte stier, vil jeg anbefale at du tilføjer en konstant til din index.php (frontcontroller) fil. Noget i stil med følgende:

Define("ROOT_PATH", realpath(dirname(__FILE__)) . DIRECTORY_SEPARATOR);

Definerer en konstant kaldet ROOT_PATH, som refererer til den mappe, hvor index.php-filen er placeret, og derfor din rodmappe. Samtidig tilføjede jeg en mappeseparator til slutningen for at gøre det nemmere at skrive stier For at bruge dette skal du skrive.

Require_once ROOT_PATH . "config/config.php";

Bonus information

Men hvis du bruger denne tilgang i din controller.php-klasse, får du den til at afhænge af denne konstant. For at rette dette kan du sende rodstien som en variabel i konstruktøren.

Offentlig funktion __construct($root) (...

Og brug det så som følgende:

Offentlig funktion __construct($root) ( require_once($root . "config/config.php"); )

Håber dette hjælper.

0

Jeg ved ikke, hvad der foregår, men require_once() sendte ikke en fejl, da han refererede til sig selv som include(), fordi de er forskellige funktioner, plus hvis dette er hele koden, er fejllinjenummeret ikke det samme som dit require_once() linje, da den burde være 4. Prøv at genstarte din webserver og se om det løser noget, ellers laver du sikkert en joke ud af noget.