Come far funzionare l'attributo richiesto per l'input nelle versioni precedenti di IE? Quindi, come posso richiedere di lavorare nelle versioni precedenti di IE.

Una delle funzionalità più divertenti e utili di PHP è l'inclusione di un altro file. Ad esempio, un sito web ha un menu in alto, un menu in basso e tra di essi il contenuto della pagina stessa. E, ad esempio, su 10 pagine del sito viene utilizzato il menu in basso. Ad un certo punto è stato necessario apportare delle modifiche. In html apporteresti manualmente modifiche in ogni singolo file, ma php ti consente di semplificare notevolmente il lavoro con il sito! Il codice per il menu in basso può essere contenuto in un file separato e su ciascuna delle 10 pagine puoi semplicemente includere questo file separato! Cioè, tutte le modifiche ora devono essere apportate solo al file con il menu e su altri 10 verrà visualizzato con le modifiche.

Il significato della connessione in php in semplice lingua russa:

File 1.php
Menù in alto

File 2.php
Menù inferiore

file esempio.php
Connetti il ​​file 1.php
Contenuto della pagina
Collega il file 2.php

Come risultato dell'elaborazione, il file example.php verrà visualizzato
Menù in alto
Contenuto della pagina
Menù inferiore
Di conseguenza, per modificare qualcosa nel menu in basso, è necessario apportare modifiche solo al file 2.php

Percorso del file Il file viene collegato in base al percorso specificato per il file. Sono disponibili due opzioni di percorso: relativo e assoluto. Relativo: questa è un'indicazione del percorso del file connesso relativo al file con le istruzioni di connessione. Assoluto: specifica il percorso completo del file incluso.

Codice PHP

// esempio di percorso relativo
include "include/tuo_file.php"; // il file si trova nella cartella include, che si trova nella stessa directory del file di connessione

// esempio di percorso assoluto
include $_SERVER["DOCUMENT_ROOT"]."/include/tuo_file.php"; // $_SERVER["DOCUMENT_ROOT"] - indica la directory principale del sito

include e include_onceinclude() sono costrutti progettati per includere file nel codice dello script PHP durante l'esecuzione dello script PHP. Durante l'elaborazione del codice, l'istruzione viene sostituita con il contenuto del file allegato. Suggerisco di guardare subito un esempio.

Diamo un'occhiata a come funziona include utilizzando due file come esempio: index.php e text.php . Per semplicità di lavoro, supponiamo che si trovino nella stessa directory.

Codice PHP (file index.php)

Echo "Testo semplice contenuto nel file principale";
includere "text.php"; // include il contenuto del file text.php

?>
Codice PHP (file text.php)

Echo "Testo contenuto nel file incluso";

?>
Il risultato dell'esecuzione del file index.php sarà:

Testo semplice contenuto nel file principale
Testo contenuto nel file incluso
È davvero conveniente? Ora, modificando il contenuto del file text.php, il risultato di index.php sarà completamente diverso!

Ora parliamo di un altro costrutto: include_once. Funziona esattamente come include, ma viene creato successivamente e per i casi in cui il file non può essere incluso nuovamente. Ad esempio, hai paura che a seguito di un errore potresti connettere un file 2 o più volte, il che influenzerà il mancato funzionamento corretto della pagina e la ricezione di un messaggio di errore corrispondente.

Codice PHP

Include_once "text.php"; // il file text.php verrà incluso una sola volta

// le riconnessioni riportate di seguito non verranno prese in considerazione e visualizzate
// e non verrà visualizzato un messaggio di errore
include_once "text.php"; // non succederà nulla

require e require_once Le istruzioni require e require_once funzionano in modo identico a include e include_once con l'eccezione di una sola funzionalità: se il file incluso non viene trovato, l'esecuzione dello script verrà interrotta (lo script non verrà più letto), mentre include e include_once semplicemente stampa l'avviso e continua l'ulteriore esecuzione dello script Se include o require non funziona Per comprendere i motivi per cui include non funziona, suggerisco di controllare tutto passo dopo passo. Non importa quanto chiari e superficiali possano essere i punti seguenti, controlla tutto fin dall'inizio

1. Controlla se il tuo server e php funzionano e se qualche codice php sul sito funziona
2. Controlla se il file di inclusione esiste
3. Controlla se il nome del file e l'estensione sono stati inseriti correttamente nella connessione
4. Assicurati che il file php incluso si trovi effettivamente all'indirizzo specificato
5. Prova a specificare non un percorso relativo, ma un percorso assoluto (percorso completo del file).

Esempio di codice PHP

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

// DOCUMENT_ROOT - indica la directory principale della risorsa
include $_SERVER["DOCUMENT_ROOT"]."/include/tuo_file.php";

6. Se il tuo file non si connette e non viene visualizzato alcun errore, nella directory con il file che stai connettendo, crea un file .htaccess con i seguenti contenuti

Php_flag display_errors Attivo
oppure nel file php, prima di connettersi, inserire la seguente riga

Segnalazione_errori(E_ALL);
Entrambe le impostazioni imporranno la visualizzazione degli errori

Grazie per l'attenzione!

Per qualsiasi sviluppatore web attualmente non esiste un problema più serio della piena compatibilità del suo prodotto con tutti i browser. Questo è probabilmente uno dei compiti principali di un buon specialista: garantire che il suo sito web venga sempre visualizzato correttamente in tutti i browser.

Il parametro richiesto, che a volte viene utilizzato per l'input, non funziona nell'antico IE, che semplicemente non può essere lasciato così. Gli utenti in pensione che utilizzano ancora IE6 dovrebbero avere la stessa facilità d'uso con il tuo sito degli utenti dell'ultima versione di Google Chrome. Chi, oltre agli sviluppatori web, può prendersi cura di loro.

Sulla nota dolente, su Internet Explorer

Per i browser normali, tra cui Firefox, Opera e Google Chrome, questo compito è relativamente semplice. Anche le versioni più vecchie di questi browser visualizzano altrettanto bene il codice HTML, a meno che, ovviamente, non vengano utilizzate nuove tecnologie. Ma per raggiungere questo obiettivo nei browser della famiglia Internet Explorer sono necessari sforzi titanici.

Ogni versione del browser Internet Explorer ha la sua stupidità unica. Ciò che funziona in IE6 potrebbe non funzionare correttamente in IE7 e viceversa. Microsoft non è riuscita a superare questo zoo nemmeno con l'ultima versione del suo browser.

Non riesco a capire perché gli sviluppatori di browser non possano semplicemente aprire e leggere gli standard W3C per la creazione di siti Web.

Pertanto, come sviluppatore web, devo agire come una sorta di “strato” tra i browser capricciosi e i visitatori del sito che richiedono conoscenza e spettacolo. Ed è fantastico che gli sviluppatori web siano riusciti a farlo finora.

Quindi, come posso richiedere di lavorare nelle versioni precedenti di IE?

JS viene in nostro aiuto. Prima non lo sopportavo, ma ora non vedo un ulteriore percorso senza di esso nella distesa del WEB “corretto”.

La soluzione fornita di seguito non l'ho inventata io, ma l'ho presa da un blog borghese. Dato che sono avido e il blog è borghese, non fornirò un collegamento ad esso.

La funzione fnCheckFields() sarà responsabile di tutto. Inserisci il codice JS sul tuo sito:

function fnCheckFields(form_obj)( var error_msg = "Compila tutti i campi obbligatori."; 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 "testo") if (form_obj_elem.getAttribute("obbligatorio") && !form_obj_elem.value) is_error = true se (is_error) alert(error_msg);

Di solito si consiglia di posizionarlo tra i tag html HEAD all'inizio della pagina, ma consiglierei comunque di posizionarlo in fondo alla pagina prima del tag BODY di chiusura. In questo modo JS ha un impatto minore sulla velocità di caricamento della pagina.

La finestra di input in cui inserire il parametro richiesto dovrebbe assomigliare a questa in html:

Questo script funziona in modo molto semplice: dopo aver fatto clic sul pulsante Invia, lo script controlla tutti gli input per la presenza del parametro richiesto e, se lo trova, esamina di conseguenza il valore immesso in questo campo. Se non viene inserito nulla in tale input, viene visualizzata una finestra di avviso sulla necessità di input. Di conseguenza, i dati non vengono inviati da nessuna parte.

È anche fantastico che se disponi di un normale browser che ha già imparato a comprendere questo parametro come previsto, tale finestra di avviso non verrà visualizzata e gli strumenti standard per l'elaborazione del parametro richiesto per il tuo browser funzioneranno.

Condividi sui social media reti

0

Sto costruendo un piccolo framework PHP MVC ed ecco la mia struttura

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

cartelle All'interno di index.php che è il front controller ho questo codice da richiedere da init.php /app/core/init.php

app/core/init.php

init.php richiede ogni controller di base e classe nella directory /core, inclusi controller.php e router.php e qui anche index.php istanzia le classi

Per ora tutto funziona bene, poiché l'ho testato creando un costruttore sia in controller.php che in router.php, quindi il codice in questi due file sarà così

app/core/controller.php

applicazione/kernel/router. php

all'interno di index.php echeggia OK! poiché le classi vengono create correttamente ma il problema è quando voglio includere config.php che è in /app/config/config.php da Controller.php che è in /app/core/Controller.php con questo codice

Ogni volta che lo faccio restituisce questo errore

Controller::include(../config/config.php): impossibile aprire lo stream: nessun file o directory in C:\AppServ\www\myapp\app\core\Controller.php sulla riga 6

Controller::include(): Impossibile aprire "../config/config.php" per l'inclusione (include_path=".;C:\php5\pear") in C:\AppServ\www\myapp\app\core\Controller .php alla riga 6

Penso di aver utilizzato la posizione corretta, sto lavorando con /app/core/Controller.php e voglio che /app/config/config.php. Sto tornando a una directory utilizzando ../

Allora perché non posso rivendicare il file?

  • 3 risposte
  • Ordinamento:

    Attività

2

Dalla mia esperienza personale, l'utilizzo di percorsi di file relativi prima o poi porterà a mal di testa. Quindi di solito utilizzo il percorso completo del file. Il vantaggio è anche che è leggermente più veloce. Quindi, se a un certo punto ricevi un errore di inclusione, è più facile trovare l'errore poiché hai a disposizione l'intero percorso.

Per poter creare percorsi assoluti, ti consiglio di aggiungere una costante al tuo file index.php (frontcontroller). Qualcosa come il seguente:

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

Definisce una costante chiamata ROOT_PATH che si riferisce alla directory in cui si trova il file index.php, e quindi alla directory root. Allo stesso tempo, ho aggiunto un separatore di directory alla fine per rendere più semplice la scrittura dei percorsi. Per usarlo, devi scrivere.

Richiedi_una volta PERCORSO_ROOT . "config/config.php";

Informazioni sui bonus

Ma se usi questo approccio nella tua classe controller.php lo fai dipendere da questa costante. Per risolvere questo problema, puoi passare il percorso root come variabile nel costruttore.

Funzione pubblica __construct($root) (...

E poi usarlo come segue:

Funzione pubblica __construct($root) ( require_once($root . "config/config.php"); )

Spero che questo ti aiuti.

0

Non so cosa stia succedendo, ma require_once() non generava un errore quando si riferiva a se stesso come include() perché sono funzioni diverse, inoltre se questo è l'intero codice, il numero della riga di errore non è lo stesso del tuo require_once(), poiché dovrebbe essere 4. Prova a riavviare il tuo server web e vedi se questo risolve qualcosa, altrimenti probabilmente starai scherzando su qualcosa.