Jump to content



Προβλημα με PHP - Βοηθεια στον Noob


fusion

Recommended Posts

Θελω να φτιαξω ενα layout με php κωδικα ο οποιος να φορτωνει με include τα header.php, footer.php, left_column.php, right_column.php και ενα include($page) οπου θα βρισκεται καθε φορα το αρθρο/σελιδα του site.

Πατωντας δηλαδη ενα link στην σελιδα να μην φορτωνει καθε φορα την νεα σελιδα αλλα να αλλαζει το include που ασχολειται με το περιεχομενο(content)(aka η μεταβλητη $page).

Ακολουθει κατι που δειχνει στο περιπου την διαδικασια ετσι οπως την εχω σκεφτει(δεν εχω δουλεψει ακομα τoν κωδικα):

index.php

Eστω οτι μεσα εχει ενα link στην σελιδα arthro1.php

(Προσπεραστε το για τωρα η σελιδα θα εχει include($page) οπου $page = /content/index.php αρχικα)

Παμε τωρα στο arthro1.php

Θα αποθηκευουμε σε μεταβλητη το ονομα του page που ζητηθηκε ($page = το ονομα του page, στην περιπτωση μας arthro1.php)

Εκει θα υπαρχει include ενα scriptακι που θα λεγεται link_system.php

link_system.php

Θα ελεγχει αν η σελιδα που ζητησαμε υπαρχει(για να βγαζει custom page_not_found).

Θα προσθετει στην μεταβλητη $page το path οπoυ θα βρισκεται το content (πχ. /content/arthro1.php <-- αυτο θα ειναι διαφορετικο απο το αρχικο arthro1.php, εκει υπηρχε μονο το include(link_system.php), εδω βρισκεται το content)

Και θα ζηταει την σελιδα με το layout αλλα με αλλαγμενη την μεταβλητη ($page = /content/arthro1.php)

Θελω να ξερω αν το σκεπτικο μου ειναι σωστο ή υπαρχει καποιος γρηγοροτερος τροπος.

Μπορω βεβαια να αφησω το cοntent πανω στο καθε page και να τραβαω include τα υπολοιπα(header.php, footer.php, left_column.php, right_column.php) αλλα ετσι δεν διαχωριζω το content απο το layout.

Ζηταω συγγνωμη αν σας κουρασα, δεν μπορω να εκφρασω καλυτερα το σκεπτικο μου σε αυτη τη φαση, ψαχνομαι αυτες τις μερες με php αλλα μεχρι στιγμης αυτο ειναι το καλυτερο που μπορω να σκεφτω με τις γνωσεις που εχω.

Οποιαδηποτε βοηθεια ειναι καλοδεχουμενη(καποια standard μεθοδος που χρησιμοποιηται σε αυτες τις περιπτωσεις).

Ευχαριστω εκ των προτερων:flower:

Link to comment
Share on other sites

σαν σκεψη ειναι μια χαρα ετσι δουλευεις πανο κατο στις CMS πλατφορμες

το μονο που εχεις να κανεις ειναι να φτιαξεις εναν handler για το indexing των σελιδων.

και μετα να ορισεις το layout. θα φτιαξεις με πινακα που θες να μπει το καθε τι και τι διαστασεις θα εχει. καλο ειναι να παιζεις με ποσοστιεες μεταβλητες και οχι με στατικες για να ειναι πιο ευκολο στο διαβασμα σε ολες τις αναλησεις

αν θες βοηθια για τον κωδικα εδω θα ειμαστε για περετερο

Link to comment
Share on other sites

Με λιγο googlαρισμα βρηκα τον κωδικα που εψαχνα. link

Με αυτο τον τροπο η σελιδα ελεγχει ποια σελιδα φορτωθηκε και ζηταει με include() το αναλογο content

Θελοντας να αποκοψω το layout απο τις σελιδες δουλεψα καπως αλλιως.

index.php

<?php

$theuri = $_SERVER['REQUEST_URI'];

if ( ($theuri =="/") or ($theuri =="/index.php") )

{

$itemis = "news.php";

}

else {

$itemis = $theuri;

}

include ("layout.php");

?>

Το παραπανω scriptακι ελεγχει ελεγχει ποια σελιδα φορτωθηκε, εισαγει σε μια μεταβλητη το ονομα της (πχ. a.php) και ζηταει με include() την σελιδα με το menu/δειγμα.

layout.php

<table style="border-top: 1px solid black; border-left: 1px solid black; border-right: 1px solid black;" border="0" cellpadding="0" cellspacing="0" width="130">

<tbody>

<tr>

<td style="border-bottom: 1px solid black;" background="background1.gif" bgcolor="black">

<div align="center">

<font color="white" size="2"><b>Menu</b></font>

</div>

</td>

</tr>

<tr>

<td style="border-bottom: 1px solid black;" onmouseover="bgColor='dimgray'" onmouseout="bgColor='gray'" bgcolor="gray"><font size="2">- <a href="index.php">Index</a></font></td>

</tr>

<tr>

<td style="border-bottom: 1px solid black;" onmouseover="bgColor='dimgray'" onmouseout="bgColor='gray'" bgcolor="gray"><font size="2">- <a href="a.php">A</a></font></td>

</tr>

</tbody>

</table>

<br>

<?php

$itemis = preg_replace("/^[^a-z0-9]?(.*?)[^a-z0-9]?$/i", "$1", $itemis);

$itemis = "content/" . $itemis;

include ("$itemis");

?>

Εχω φτιαξει ενα πινακακι(menu) με links στις σελιδες index.php και a.php για δοκιμη χωρις css και extras.

Ακολουθει ο κωδικας που καθαριζει το string/διευθυνση απο special characters(θελουμε να αφαιρεσει το "/"), προσθετει στο string το path content/ οπου βρισκονται τα περιεχομενα αρθρα και τελος ζηταει με include() το καταλληλο αρχειο(πχ. content/a.php).

Σκεφτομαι τα scriptακια να τα βαλω και αυτα σε ξερχωριστο φακελο και να τα τραβαω με include().

Σημειωση

To πρωτο script πρεπει να μπει σε καθε σελιδα που ζηταμε(οχι στο φακελο με τα contents).

Αυτα τα ολιγα:D

D.J.AleXXX_gr ευχαριστω για τα tips.

Link to comment
Share on other sites

για να σε βοηθισω λιγο ακομα δεν χρειαζετε να αποκρυψεις τα included php files απλος βαλε σαν προτη γραμμη αυτο εδω και ετσι θα κλιδονεις το php απο direct access

defined( '_VALID_MOS' ) or die( 'Restricted access' );

μολις σικοσης ενα demo θα ηθελα να δω τι δουλεια εχεις κανει

Link to comment
Share on other sites

  • 3 weeks later...

Σε μερικες μερες ανεβαζω το πρωτο demo.

To layout εχει σχεδον τελειωσει, ισως να αλλαξω καποια πραγματακια να το ομoρφηνουμε(rounded corner menu tables:rolleyes:)

για να σε βοηθισω λιγο ακομα δεν χρειαζετε να αποκρυψεις τα included php files απλος βαλε σαν προτη γραμμη αυτο εδω και ετσι θα κλιδονεις το php απο direct access

defined( '_VALID_MOS' ) or die( 'Restricted access' );

μολις σικοσης ενα demo θα ηθελα να δω τι δουλεια εχεις κανει

Φιλε εψαξα την εντολη που μου εδωσες, δεν εχω καταλαβει ακομα πως την δουλευουμε, τι κανει δηλαδη, και που να την βαλω, στο layout.php?

Link to comment
Share on other sites

τιν βαζεις σε ολα τα secondary or included files.

συνιθος μπενει στην πρωτη γραμμη.

αυτο που κανει ειναι να αποτρεπει κακοβουλους χρηστες απο το να καλεσουν η να δουνε directly τα php files σου.

δλδ

εχεις μια index.php η οπια κανει include την layout.php τιν index θα ττν αφισεις εως εχει και στην layout θα βαλεις τον κωδικα που σου ειπα.

Link to comment
Share on other sites

Κοιτα σκοπευω να φτιαξω ενα template γι' αυτο και θα λειπει το περιεχομενο, οτι content βαλω θα ειναι για να δειξει τις δυνατοτητες των scripts.

Εξαλλου δεν σκεφτομαι να ανεβασω site με καποιο θεμα προς το παρον, περισσοτερο για χαβαλε το φτιαχνω.:p

edit:

Το lightbox2 ωραιο φαινεται.:p

Link to comment
Share on other sites

  • 3 weeks later...

Λοιπον, το demo, οπως προσταξε ο D.J.AleXXX_gr.:p

Ερχεται και εξεταστικη οποτε δεν ξερω ποσο θα ασχοληθω το επομενο μηνα.

Ριξτε μια ματια και πειτε και καμια γνωμη ευχαριστω.

http://fusion.gofreeserve.com/index.php

Link to comment
Share on other sites

fusion, έριξα μια ματιά στο source σου και θα σου πρότεινα για μην γράφεις όλον αυτόν τον κώδικα για την ημερομηνία και την ώρα να χρησιμοποιήσεις, αν θες, τον παρακάτω κώδικα...


var tmp_str = Date().toString();

//Για την ημερομηνία (πχ Sat, 31 May 2008)
document.write(tmp_str.substring(0, tmp_str.indexOf("GMT") - 10 ) );

//Για την ώρα (πχ 20:31:12)
document.write(tmp_str.substring(tmp_str.indexOf("GMT") - 10, tmp_str.indexOf("GMT") ) );

Έτσι θα γλυτώσεις καμιά 80αριά γραμμές κώδικα...

Επίσης, αν θες, μπορείς να μειώσεις τα κενά (spaces) στο html σου, κάθε κενό είναι ένας byte (20Η). Αυτή τη στιγμή το html σου έχει 11.074 bytes εκ των οποίων 2.196 bytes είναι το space... όσα λιγότερα κενά τόσο πιο γρήγορο το downloading της σελίδας από έναν αργό server... όχι ότι έχει και πολύ σημασία, αλλά anyway...

Link to comment
Share on other sites

πολυ καλη προσπαθια.

λοιπον

σε αυτο που λεει ο jaco σιμφοινο και εχει δικιο

τωρα κατι σε θεμα HCI(human computer interaction). το site ειναι τυπου portal (3 columes) θα σου προτινα να φερεις στο ιδιο υψος τα δεξια menu οπως ειναι και το αριστερο.

μια αλλη συμβουλη ειναι να δεις την κεντρικη του thelab και να παλεψεις για κατι αντιστιχο. δηδαδη πανο header απο κανο main αριστερα menu δεξια menu και κεντο content space. τα μενου αριστερα δεξια δεν ειναι υποχρεοτικο να ειναι menu μπορει να ειναι οτι μπορεις να φανταστις.

αυτα απο μενα οποτε μου ερθει κατι αλλο θα στο ποσταρω

ps. το αυτοματο redirection σε λανθασμενη σελιδα δεν δουλευει για κιτατο μια

Link to comment
Share on other sites

Επαιξε τρελη βλακεια, ειχα αφησει να ζηταει το css file απο το path του localhost.:wall:

Καπως ετσι 127.0.0.1/style.css.

Το ποιο ακυρο ειναι οτι απο μερικα pc φιλων το εβλεπε και απο μερικα οχι.:...:

Κανονικα δεν επρεπε να το βλεπει, πως γινεται αυτο? proxy??

Εσεις βλεπατε τις σελιδες με css?

Επίσης, αν θες, μπορείς να μειώσεις τα κενά (spaces) στο html σου, κάθε κενό είναι ένας byte (20Η). Αυτή τη στιγμή το html σου έχει 11.074 bytes εκ των οποίων 2.196 bytes είναι το space... όσα λιγότερα κενά τόσο πιο γρήγορο το downloading της σελίδας από έναν αργό server... όχι ότι έχει και πολύ σημασία, αλλά anyway...

μμμ απλα να καταλαβω μιλας για spaces ή και για tabs? γιατι συνηθως με tabs δουλευω...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.