Include μόνο υπαρκτών σελίδων

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
hik-hok
Reporter
Δημοσιεύσεις: 3571
Εγγραφή: 09 Μαρ 2003 10:45
Τοποθεσία: Agrrrrrrrrrr...... γάβ γάβ!!
Επικοινωνία:

Include μόνο υπαρκτών σελίδων

Δημοσίευση από hik-hok » 18 Σεπ 2004 22:25

Για να αποφύγετε τα :
Warning: main(homef.php): failed to open stream: No such file or directory in /home/xyz/public_html/index.php on line 111

Warning: main(homef.php): failed to open stream: No such file or directory in /home/xyz/public_html/index.php on line 111

Warning: main(): Failed opening 'homef.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/xyz/public_html/index.php on line 111
όταν είναι λάθος το link και αναφέρεται σε σελίδα που δέν υπάρχει προς include μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα ο οποίος αναφέρεται στο php manual :

Κώδικας: Επιλογή όλων

<?
$the_array = Array&#40;&#41;;
$handle = opendir&#40;'./pages'&#41;; 

while &#40;false !== &#40;$file = readdir&#40;$handle&#41;&#41;&#41; &#123; 
   if &#40;$file != "." && $file != ".." && $file != "WS_FTP.LOG"&#41; 
	 &#123;   $the_array&#91;&#93; = $file; 
   &#125; 
&#125;
closedir&#40;$handle&#41;; 

foreach &#40;$the_array as $element&#41; &#123;
  if &#40;$selida==$element&#41; &#123;
	include "./pages/$element";
	break;
	&#125;else&#123;
	echo "";
	&#125;
&#125;
?>
Ο οποίος διαβάζει τα περιεχόμενα του φακέλου όπου έχουμε τις σελίδες (στο παράδειγμα μας ../pages) τα αποθηκεύει σε ένα Array και μετά τα συγκρίνει με το ζητούμενο link (στο παράδειγμα $selida).

Προσοχή χρειάζεται μόνο στο ότι στο array οι σελίδες υπάρχουν με το όνομα π.χ. kentriki.php , sales.php , trial.php οπότε άν τα Link που χρησιμοποιούμε είναι του τύπου kentriki, sales , trial πρέπει πρίν τον παραπάνω κώδικα να βάλουμε το $selida="$page.php" ή να κάνουμε strip το .php για να μπορεί να γίνει σύγκριση.

Σίγουρα κάποιος php master θα το έκανε πιο elegant αλλά που θα πάει θα μάθουμε :-?
Εικόνα

Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8574
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

Include μόνο υπαρκτών σελίδων

Δημοσίευση από Basilakis » 19 Σεπ 2004 18:45

Πάρα πολύ καλό hip-hop και βέβαια χρήσιμο....

Δεν κατάλαβα τι κάνει το αρχείο του ws όμως!

Άβαταρ μέλους
hik-hok
Reporter
Δημοσιεύσεις: 3571
Εγγραφή: 09 Μαρ 2003 10:45
Τοποθεσία: Agrrrrrrrrrr...... γάβ γάβ!!
Επικοινωνία:

Include μόνο υπαρκτών σελίδων

Δημοσίευση από hik-hok » 19 Σεπ 2004 20:45

μέσα στο

Κώδικας: Επιλογή όλων

$file != "xyz.txt"
βάζεις όποιο αρχείο βρίσκεται στον ίδιο φάκελο αλλά δέν θέλεις να μπεί στο array οπότε δεν θα μπορεί να γίνει και include.
Εικόνα


Ryu
Δημοσιεύσεις: 74
Εγγραφή: 24 Σεπ 2004 16:32

Include μόνο υπαρκτών σελίδων

Δημοσίευση από Ryu » 24 Σεπ 2004 16:39

Aftos o kodikas, se poio simeio enos html document mpainei? Anamesa sto....?

<head> kai </head>??
<body> kai <body>???

Pou?

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Include μόνο υπαρκτών σελίδων

Δημοσίευση από Rapid-eraser » 24 Σεπ 2004 17:02

ekei pou 8es va dikseis tnv selida pou 8a givei include

pavtos dev eivai oti kai to kalitero apo apopsi kodika :P
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Ryu
Δημοσιεύσεις: 74
Εγγραφή: 24 Σεπ 2004 16:32

Include μόνο υπαρκτών σελίδων

Δημοσίευση από Ryu » 24 Σεπ 2004 17:40

Αυτό που λες ισχύει για όλα τα php scripts?

Π.χ στην javascript άλλα τα βάζεις εδώ άλλα εκεί. Το "εδώ" είναι συνήθως (9 στις 10 φορές) στο <head> ενώ το "εκεί", εκεί που είπες....

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Include μόνο υπαρκτών σελίδων

Δημοσίευση από Rapid-eraser » 24 Σεπ 2004 17:43

otav kaveis kati echo n include
stnv php exei simasia pou briskete mesa sto script sou se sxesi me tov kodika tov html

ektos aftou n javascript eivai client side glossa kai mporei va exei sav avafora kapoia sta8era avtikimeva :P
n php dev exei tetoies avafores 8esis opote opou blazeis to include sou ekei bgevei :P
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Ryu
Δημοσιεύσεις: 74
Εγγραφή: 24 Σεπ 2004 16:32

Include μόνο υπαρκτών σελίδων

Δημοσίευση από Ryu » 24 Σεπ 2004 18:27

Ευχαριστώ. :) Ρώτησα γιατί είχα δει ένα tutorial που έλεγε ότι σώνει και καλά πρέπει το script να είναι πριν από όλα. Ενώ αλλού είχα δει άλλα...

Άβαταρ μέλους
hik-hok
Reporter
Δημοσιεύσεις: 3571
Εγγραφή: 09 Μαρ 2003 10:45
Τοποθεσία: Agrrrrrrrrrr...... γάβ γάβ!!
Επικοινωνία:

Include μόνο υπαρκτών σελίδων

Δημοσίευση από hik-hok » 24 Σεπ 2004 18:28

Rapid-eraser έγραψε:pavtos dev eivai oti kai to kalitero apo apopsi kodika :P
στο manual το είχε :o
Εικόνα

Άβαταρ μέλους
iNDEFiX
Honorary Member
Δημοσιεύσεις: 2569
Εγγραφή: 20 Δεκ 2002 00:48
Τοποθεσία: κλειστή λόγω έργων
Επικοινωνία:

Include μόνο υπαρκτών σελίδων

Δημοσίευση από iNDEFiX » 24 Σεπ 2004 18:46

Vasika ego den exo poli-katalavei pou xrhsimevei to parapano script... poli apla mporeis na valeis ena "@" mprosta apo to include gia na mhn petaei lathos px: @include('file.php'); i kati se styl:

if (file_exists('file.php')) {
include('file.php')
} else {
echo "The file file.php does not exist";
}

Άβαταρ μέλους
iNDEFiX
Honorary Member
Δημοσιεύσεις: 2569
Εγγραφή: 20 Δεκ 2002 00:48
Τοποθεσία: κλειστή λόγω έργων
Επικοινωνία:

Include μόνο υπαρκτών σελίδων

Δημοσίευση από iNDEFiX » 24 Σεπ 2004 18:49

Episis, gia na kanei proccess mono ta .php file (apokleiontas ola ta .txt .html ktl ktl) mporei na graftei kai etsi:

Κώδικας: Επιλογή όλων

<? 
$the_array = Array&#40;&#41;; 
$handle = opendir&#40;'./pages'&#41;; 

while &#40;false !== &#40;$file = readdir&#40;$handle&#41;&#41;&#41; &#123; 
   $file_ext = substr&#40;$file,-4&#41;;
   if &#40;$file != "." && $file != ".." && $file_ext ==".php"&#41;
    &#123;   $the_array&#91;&#93; = $file; 
   &#125; 
&#125; 
closedir&#40;$handle&#41;; 

foreach &#40;$the_array as $element&#41; &#123; 
  if &#40;$selida==$element&#41; &#123; 
   include "./pages/$element"; 
   break; 
   &#125;else&#123; 
   echo ""; 
   &#125; 
&#125; 
?>
Τελευταία επεξεργασία από το μέλος iNDEFiX την 24 Σεπ 2004 18:50, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
Rapid-eraser
WebDev Moderator
Δημοσιεύσεις: 6851
Εγγραφή: 05 Απρ 2003 17:50
Τοποθεσία: Πειραιάς
Επικοινωνία:

Include μόνο υπαρκτών σελίδων

Δημοσίευση από Rapid-eraser » 24 Σεπ 2004 18:49

Pavo pou 8a apavtaga :)

Basika aftos o kodikas pou dixveis dev eivai
paradigma sto include alla sto readdir.

Safos opos eipe o mike dev prokete gia kodika pou
se glitovei apo ta warrings (afto givete me to @)
Alla gia kodika pou dixvei pos doulebei to
readdir :)
Cu, Rapid-eraser, Tα αγαθά copies κτώνται.
Love is like oxygen, You get too much you get too high
Not enough and you're gonna die, Love gets you high

Άβαταρ μέλους
iNDEFiX
Honorary Member
Δημοσιεύσεις: 2569
Εγγραφή: 20 Δεκ 2002 00:48
Τοποθεσία: κλειστή λόγω έργων
Επικοινωνία:

Include μόνο υπαρκτών σελίδων

Δημοσίευση από iNDEFiX » 24 Σεπ 2004 18:52

hik-hok έγραψε:
Rapid-eraser έγραψε:pavtos dev eivai oti kai to kalitero apo apopsi kodika :P
στο manual το είχε :o
Sto manual ta perisotera script einai poli apla kai xodrokomena gia na ta katalavenei o kosmos. Px to foreach() tha to sinadiseis para poli spania se programata PHP. Kala ekanes kai to dimosieyses vevaia :D alla den shmenei pos einai kai to teliotero epidi einai sto manual

Άβαταρ μέλους
_Invisible_
Δημοσιεύσεις: 418
Εγγραφή: 16 Νοέμ 2006 16:47
Τοποθεσία: Greece

Include μόνο υπαρκτών σελίδων

Δημοσίευση από _Invisible_ » 16 Μαρ 2007 18:36

Εγώ πάντως μόλις είδα τον τίτλο, φαντάστηκα κάτι τέτοιο:

Κώδικας: Επιλογή όλων

<?php

error_reporting&#40;E_ALL&#41;;

$files = array&#40;
	'file.php' => 1, 
	'file2.php' => 0
&#41;;

foreach&#40;$files as $file => $include_file&#41;
&#123;
	if &#40;file_exists&#40;$file&#41; && is_file&#40;$file&#41;&#41;
	&#123;
		if &#40;$include_file&#41;
		&#123;
			include&#40;$file&#41;;
		&#125;

	&#125;
	else
	&#123;
		die&#40;"File " . $file . " does not exist."&#41;;
	&#125;

&#125;

?>
Όπως βλέπετε το παραπάνω script, έχει στο array $files τα αρχεία που θέλουμε να κάνουμε include. Λειτουργεί ως εξής: δίπλα από το όνομα του αρχείου, έχουμε το 1 ή το 0. Το 1 σημαίνει ότι θα γίνει include το αρχείο και το 0 ότι δεν θα γίνει include.

Το script θα κάνει include το αρχείο μόνο αν έχει στο element value το 1 και μόνο αν υπάρχει στον κατάλογο. Αν το αρχείο δεν υπάρχει, θα βγάλει σφάλμα ότι το Χ αρχείο δεν υπάρχει...

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης