Η σελίδα μας αναβαθμίστηκε, γι' αυτό τον λόγο τα μέλη μας θα πρέπει να ζητήσουν νέο κωδικό πρόσβασης από την υπηρεσία "Αποστολή κωδικού πρόσβασης".
Εάν το email με τον νέο κωδικό δεν έρθει στο inbox κοιτάξτε και στο spam folder. Ο server είναι φρέσκος και δεν έχει το reputation που του αξίζει.

Πρόβλημα με την ανάγνωση του url της σελίδας

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

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

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

Πρόβλημα με την ανάγνωση του url της σελίδας

Δημοσίευση από _Invisible_ » 06 Αύγ 2007 04:45

Γεια σας.

Λογικό είναι το $_SERVER['REQUEST_URI'] να μας εμφανίζει το requested url μας (πχ /new/new_content?test=1).

Το

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

$live_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'];
μου εμφανίζει:
Μέσα στο .htaccess μου χρησιμοποιώ διάφορες μεθόδους για να στέλνω τα URL δυναμικά. Για παράδειγμα το http://localhost/new/new_content είναι http://localhost/new/index.php?act=new_content

Το θέμα είναι ότι αποθηκεύω το URL της σελίδας που βρίσκεται ο user σε ένα table της db. Το πρόβλημα είναι ότι αντί να αποθηκευτεί στην db: http://localhost/new/index.php?act=new_content&test=1 μου βγαίνει το http://localhost/new/images?im=img07 (δηλ. http://localhost/new/index.php?act=images&im=img07).

To http://localhost/new/index.php?act=images&im=img07 εμφανίζει την εικόνα από έναν φάκελο. Το θέμα είναι ότι δεν ξέρω γιατί γίνεται αυτό... Μάλλον την ώρα που πάει να γίνει το insert στην db έχει εκείνο το request url? Τι να πω... Δεν ξέρω.

Το περίεργο είναι πως μέσα στην σελίδα όταν γράφω echo $live_url μου βγάζει το σωστό και όχι αυτό που μπαίνει στην DB.

Το ειρωνικό:
Έκανα echo(nl2br($sql)); για να δω το SQL query πριν εκτελεστεί και είναι μια χαρά!

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

UPDATE sessions
SET Date = '1186361668',
Link = 'http://localhost/new/index.php?act=new_content&test=1'
WHERE PHPSESSID = '1cf17efbe9b7c842b0b23ac6e7ca5aed'
LIMIT 1;
και ακριβώς από κάτω απλά εκτελώ την εντολή SQL. Αυτό είναι όλο... αλλά το αποθηκεύει λάθος στην DB...

Καμιά ιδέα;

Ευχαριστώ!

Έχετε κάποια ιδέα;

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Πρόβλημα με την ανάγνωση του url της σελίδας

Δημοσίευση από cherouvim » 06 Αύγ 2007 09:34

Limit στο update;

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

Πρόβλημα με την ανάγνωση του url της σελίδας

Δημοσίευση από _Invisible_ » 06 Αύγ 2007 18:08

cherouvim έγραψε:Limit στο update;
Αν λες για το LIMIT που έβαλα στο query είναι για όταν βρει την εγγραφή και κάνει το update, να σταματήσει να ψάχνει για παρόμοιες εγγραφές -- έτσι υποθέτω και το query θα εκτελεστεί πιο γρήγορα.

Αν υπήρχε κάποιο limit στο URL δεν θα έμπαινε το http://localhost/new/index.php?act=images&im=img07 γιατί δεν έχει καμία σχέση με το http://localhost/new/index.php?act=new_content. Δηλαδή και να κόβαμε το URL πάλι δεν θα έμπαινε αυτό που μπήκε...

Ευχαριστώ για την απάντηση.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Πρόβλημα με την ανάγνωση του url της σελίδας

Δημοσίευση από cherouvim » 06 Αύγ 2007 18:49

ΟΚ. Δεν ήξερα οτι πάιζει limit πάνω στο update.

panosru
WebDev Moderator
Δημοσιεύσεις: 1885
Εγγραφή: 13 Σεπ 2005 16:13
Τοποθεσία: Camp

Πρόβλημα με την ανάγνωση του url της σελίδας

Δημοσίευση από panosru » 06 Αύγ 2007 18:54

Me mia proth skepsh to mono pou mourxete einai oti kata pasa periptosh to query ektelhte pano apo 1 fora os apotelesma na pernei ayto to url thn teleytaia fora ths ekteleshs tou, prosekseto ayto ligo, des mhn exeis to query se kapoio loop h kati paromoio pou tha to kanei na ektelestei pano apo 1 fores, an thes episeis dikse kai ligo ton kodika sou.

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

Πρόβλημα με την ανάγνωση του url της σελίδας

Δημοσίευση από _Invisible_ » 07 Αύγ 2007 04:29

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

<?php

if &#40;!defined&#40;'ALLOW_ACCESS'&#41;&#41;
&#123;
	exit;
&#125;

$session_id = session_id&#40;&#41;;
$secure = &#40;isset&#40;$_SERVER&#91;'HTTPS'&#93;&#41; && $_SERVER&#91;'HTTPS'&#93; == 'on'&#41; ? 1 &#58; 0;

$live_url = &#40;&#40;$secure&#41; ? 'https&#58;//' &#58; 'http&#58;//'&#41; . $_SERVER&#91;'HTTP_HOST'&#93; . $_SERVER&#91;'PHP_SELF'&#93; . '?' . $_SERVER&#91;'QUERY_STRING'&#93;;

$sql = "SELECT session_ID, PHPSESSID, Host, Date, Link
		FROM " . SESSION_TABLE . "
		WHERE PHPSESSID = '" . escape&#40;$session_id&#41; . "'
		LIMIT 1;";

if &#40; ! &#40; $result = $db->sql_query&#40;$sql&#41; &#41; &#41;
&#123;
	html_page&#40;$lang&#91;'Error'&#93;, 'DB Error&#58; Could not query Session Table.'&#41;;
&#125;
else
&#123;
	$rows = $db->sql_numrows&#40;$result&#41;;

	if &#40; $rows == 0 &#41;
	&#123;
		// User's first visit
		$ins = "INSERT 
				INTO " . SESSION_TABLE . "
				&#40;session_ID, PHPSESSID, Host, ip, Date, Link&#41;
				VALUES
				&#40;
					'0', 
					'" . escape&#40;$session_id&#41; . "',
					'" . escape&#40;gethostbyaddr&#40;$client_ip&#41;&#41; . "',
					'" . escape&#40;$client_ip&#41; . "',
					'" . &#40;int&#41; time&#40;&#41; . "',
					'" . escape&#40;$live_url&#41; . "'
				&#41;;";

		if &#40; ! &#40; $db->sql_query&#40;$ins&#41; &#41; &#41;
		&#123;
			html_page&#40;$lang&#91;'Error'&#93;, 'DB Error&#58; Could not insert entry in Sesssion Table.'&#41;;
		&#125;

	&#125;
	else
	&#123;
		// session information already stored in our db
		// let's update the table!
		$upd = "UPDATE " . SESSION_TABLE . "
				SET Date = '" . &#40;int&#41; time&#40;&#41; . "',
				Link = '" . escape&#40;$live_url&#41; . "'
				WHERE PHPSESSID = '" . escape&#40;$session_id&#41; . "'
				LIMIT 1;";

		if &#40; ! &#40; $db->sql_query&#40;$upd&#41; &#41; &#41;
		&#123;
			html_page&#40;$lang&#91;'Error'&#93;, 'DB Error&#58; Could not update Session Table.'&#41;;
		&#125;

	&#125;

&#125;

?>
το παραπάνω αρχείο ονομάζεται "sessions.php" και το έχω βάλει require_once που σημαίνει ότι δεν γίνεται include πάνω μία φορά. Μέσα στο αρχείο, δεν υπάρχει κάποιο while ή κάποιος βρόγχος for για να κάνει loop... Τι να πω, ίσως μου διαφεύγει.

Ευχαριστώ για τις απαντήσεις σας.

PS: Κάντε και κανένα σχόλιο για τον κώδικά μου. Με βοηθάει όταν προγραμματιστές μου λένε "χρησιμοποίησε αυτό" ή "αυτό μην το κάνεις έτσι" κλπ.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Πρόβλημα με την ανάγνωση του url της σελίδας

Δημοσίευση από cherouvim » 07 Αύγ 2007 09:28

_Invisible_ έγραψε:PS: Κάντε και κανένα σχόλιο για τον κώδικά μου. Με βοηθάει όταν προγραμματιστές μου λένε "χρησιμοποίησε αυτό" ή "αυτό μην το κάνεις έτσι" κλπ.
Μην γράφεις χύμα SQL μέσα στο κώδικά σου. Φτιάξε ένα php script με functions, ή ένα php class που να κάνει όλη την επικοινωνία με τη βάση. Μετά από το client κώδικα, θα καλείς αυτές τις functions.

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

Πρόβλημα με την ανάγνωση του url της σελίδας

Δημοσίευση από _Invisible_ » 07 Αύγ 2007 22:56

Χρησιμοποιώ το class του phpBB για να εκτελώ εντολές τις SQL και δεν είχα κάποιο πρόβλημα μέχρι τώρα. Με αυτό που λες, θα μπορούσα να κάνω μια εφαρμογή να υποστηρίζει περισσότερες databases :)

Ωραία, έχουμε κάποιο άλλο σχόλιο; Μήπως κάποια άλλη ιδέα για την λύση του προβλήματος;

Ευχαριστώ.

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

Πρόβλημα με την ανάγνωση του url της σελίδας

Δημοσίευση από _Invisible_ » 08 Αύγ 2007 05:16

Με τρομερή λύπη μου διαπίστωσα στις 8/82007 ώρα 4:10 το πρωί ότι μία σελίδα του site μου με 7 queries, εκτελούσε 56 queries.

Γιατί γινόταν αυτό:
Μέσω του .htaccess μου έκανα τον apache να μου δώσει την δυνατότητα να χρησιμοποιώ δυναμικά URLs. Πχ. το http://localhost/index.php?act=login το έδινα έτσι: http://localhost/login και δούλευε κανονικά.

Το θέμα είναι ότι όλες τις σελίδες τις έκανα include, έτσι ποτέ δεν έδινες /login.php - μόνο login. Έτσι είχα το προνόμοιο να βάζω:

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

if &#40;!defined&#40;'ALLOW_ACCESS'&#41;&#41;
&#123;
   exit;
&#125;
και να απαγορεύω το direct call μιας σελίδας. Τι έγινε τώρα: Είχα ένα module το οποίο έψαχνε σε ένα table για εικόνες και μετά κοιτούσε το URL κοιτούσε στο table αν υπήρχε η εικόνα και μετά κοιτούσε αν υπήρχε και στο file system της εφαρμογής. Αυτό το έκανα για να μην εμφανιστεί ποτέ το path μιας εικόνας.

Μέσα στο CSS μου, είχα background:url(../../images?im=background); και αυτό εμφάνιζε το background της σελίδας. Ναι, αλλά για να εμφανίσει την εικόνα αυτή, έκανε ένα καινούργιο request και περνούσε ξανά τους ελέγχους και όλα τα queries της εφαρμογής με αποτέλεσμα να δημιουργήσει 56 queries ενώ τα queries για εκείνη την σελίδα ήταν 7.

Αυτό γινόταν λόγω των εικόνων. Δυστυχώς, δεν μπορώ να κάνω τίποτα για να το αλλάξω, παρα μόνο να σβήσω το table με τις εικόνες και να δίνω full path στις εικόνες...

Κοίτα να δεις βρε παιδί τι πήγα και έπαθα... Τι να πεις...

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

Πρόβλημα με την ανάγνωση του url της σελίδας

Δημοσίευση από _Invisible_ » 08 Αύγ 2007 06:08

ΗΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΗΗΑΗΑΗΑ

Το έφτιαξα!!!! Εκτελεί μόνο 7 queries τώρα :) Το πρόβλημα ήταν η ιστορία με τις εικόνες :x

Thanks guys για τις απαντήσεις!!!

Απάντηση

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

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

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