slevinkelevra Δημοσ. 5 Ιουλίου 2014 Δημοσ. 5 Ιουλίου 2014 Καλησπερα Βλεπω ενα παραδειγμα που λεει για ajax κτλ και πεφτω πανω στο εξης //jquery side -get request $.get('e.php', requestData, function(data) { $('#dictionary').html(data); }); και //php side -server $term = strtoupper($_REQUEST['term']); //blah blah blah... Ποτε δεν ειχα δωσει ιδιαιτερη σημασια στην request γιατι μια ζωη get ή post χρησιμοποιουσα. Το μονο που βρηκα για τη request ειναι οτι "An associative array that by default contains the contents of $_GET, $_POST and $_COOKIE." και οτι "all data submitted via GET or POST is also availiable through $_REQUEST". Το προβλημα μου ειναι οτι δε μπορω να καταλαβω που θα χρησιμευε μια request πρακτικα, περα απο ορισμους, στη "καθημερινη ζωη". Δεν βρηκα καποιο παραδειγμα να με βοηθαει. Μπορειτε εσεις να μου το κανετε κατοσταρικα? Εχετε κανα παραδειγμα της προκοπης? Μηπως εχει αλλα χαρακτηριστικα η request που τη κανουν πιο γρηγορη ή ασφαλη ξερω γω απο την get/post? Ευχαριστω
geomagas Δημοσ. 5 Ιουλίου 2014 Δημοσ. 5 Ιουλίου 2014 Πιο γρήγορη ή ασφαλή, όχι. Απλά σου προσφέρει ένα abstraction: Αντί να χρειάζεται να ξέρεις από που ήρθε η τάδε request parameter (get, post ή cookie) τις βρίσκεις όλες μέσα στο $_REQUEST και καθαρίζεις. Θα πρέπει όμως να ξέρεις πως γίνεται το conflict resolution. 1
slevinkelevra Δημοσ. 5 Ιουλίου 2014 Μέλος Δημοσ. 5 Ιουλίου 2014 Επειδη παιζει να μη καταλαβα εννοείς να εχω στο client κατι σαν $.post('e.php', requestData1 //blah blah $.get('e.php', requestData2 //blah blah και στο σερβερ, στο e . php να εχω πχ $term = $_REQUEST['requestData1, requestData2']; Μαλλον μπερδευτηκα χειροτερα... edit οτι προσφερει abstraction και δε χρειαζεται να ψαχνομαι αν μια μεταβλητη ειναι απο get ή Post, το καταλαβα. Απο κει και περα με μπερδεψε το λινκ edit 2 ας πουμε στο δικο μου php ini βλεπω variables_order = "GPCS". οκ, πρακτικα πως συνδεεται με το request αυτο?
geomagas Δημοσ. 5 Ιουλίου 2014 Δημοσ. 5 Ιουλίου 2014 Επειδη παιζει να μη καταλαβα εννοείς να εχω στο client κατι σαν $.post('e.php', requestData1 //blah blah $.get('e.php', requestData2 //blah blah και στο σερβερ, στο e . php να εχω πχ $term = $_REQUEST['requestData1, requestData2']; Μαλλον μπερδευτηκα χειροτερα... Κατ' αρχάς, το παραπάνω είναι λάθος σύνταξη. Δεύτερον, δεν μπορείς να κάνεις δύο requests ταυτόχρονα, οπότε το server script σου δεν έχει νόημα να προσπαθήσει να τις εξυπηρετήσει και τις δύο ταυτόχρονα. Ξέχνα για λίγο τη javascript και σκέψου ότι σε κάποιο σημείο της εφαρμογής σου έχεις αυτό: <form method='get' action='some.php'> <input type='text' name='id'> <input type='submit' value='Shove it'> </form> Και σε ένα άλλο σημείο, αυτό: <form method='post' action='some.php'> <input type='text' name='id'> <input type='submit' value='Shove it'> </form> Μην με ρωτήσεις γιατί, just bare with me. Στο some.php τώρα, για να επεξεργαστείς κάθε περίπτωση, θα πρέπει να έχεις: if(isset($_POST['id'])) shove_it($_POST['id']); if(isset($_GET['id'])) shove_it($_GET['id']); Αντί γι' αυτό λοιπόν, μπορείς να κάνεις if(isset($_REQUEST['id'])) shove_it($_REQUEST['id']); ...που θα "πιάσει" το id απ' όπου κι αν προέρχεται. Αυτό το σκοπό και μόνο εξυπηρετεί η ύπαρξη της $_REQUEST. edit οτι προσφερει abstraction και δε χρειαζεται να ψαχνομαι αν μια μεταβλητη ειναι απο get ή Post, το καταλαβα. Απο κει και περα με μπερδεψε το λινκ edit 2 ας πουμε στο δικο μου php ini βλεπω variables_order = "GPCS". οκ, πρακτικα πως συνδεεται με το request αυτο? Ας υποθέσουμε τώρα ότι έχεις: <form method='post' action='some.php?id=5'> <input type='text' name='id'> <input type='submit' value='Shove it'> </form> Το $_REQUEST['id'] τι θα περιέχει; Βλέπεις το conflict; Με GP...-σειρά, το request πρώτα θα γεμίσει με το $_GET, και μετά με το $_POST, του οποίου οι τιμές θα πανωγράψουν αυτές του $_GET, οπότε θα υπερισχύσει το $_POST['id']. 1
slevinkelevra Δημοσ. 5 Ιουλίου 2014 Μέλος Δημοσ. 5 Ιουλίου 2014 Αχα, οκ Κατι τελευταιο, η τελευταια φορμα εχει get και post μαζι επειδη στο action της εχει data μετα το "?"
geomagas Δημοσ. 5 Ιουλίου 2014 Δημοσ. 5 Ιουλίου 2014 Αχα, οκ Κατι τελευταιο, η τελευταια φορμα εχει get και post μαζι επειδη στο action της εχει data μετα το "?" Ακριβώς. 1
slevinkelevra Δημοσ. 5 Ιουλίου 2014 Μέλος Δημοσ. 5 Ιουλίου 2014 Αρα ειμαστε On the same page Εγω το τεσταρα ως εξης Form: <form method='post' id="some" action='some.php?name="d"&value="2"'> <input type="text" name="d" value="1" /> <input type="submit" value="Shove it"/ > </form> Jquery to submit the form : $('#some').submit(function(e) { e.preventDefault(); $.post('some.php', $(this).serialize(), function(data) { $('#dictionary').html(data); }); }); Some.php : <?php echo $_REQUEST['d']; ?> το οποιο δινει πισω 1. Το some . php λογω του request ειναι σα να βλεπει την ιδια μεταβλητη. Πρωτα βλεπει το get (2) και μετα λογω variables_order το post (1) γ αυτο γυρναει πισω 1. Αν και αυτο δεν ειναι και πολυ ρεαλιστικο σεναριο, γτ δε βαζεις 2 μεταβλητες με το ιδιο name, ουτε στο action της φορμας, κολλημενο ενα get. Εκτος αν το καταλαβα παλι λαθος....
geomagas Δημοσ. 5 Ιουλίου 2014 Δημοσ. 5 Ιουλίου 2014 Πρωτα βλεπει το get (2) και μετα λογω variables_order το post (1) γ αυτο γυρναει πισω 1. Όχι. Για να έκανε κάτι τέτοιο, θα έπρεπε να ήταν: <form method='post' id="some" action='some.php?d=2'> Τότε θα είχες: $_GET==array('d'=>'2'); $_POST==array('d'=>'1'); /* or whatevertheusersupplies */ $_REQUEST==array('d'=>'1' /* plus $_COOKIE */); ...λόγω του conflict resolution που συζητούσαμε. Τώρα εσύ έχεις: $_GET==array('name'=>'d', 'value'=>'2'); $_POST==array('d'=>'1'); /* or whatevertheusersupplies */ $_REQUEST==array( 'name'=>'d', 'value'=>'2', 'd'=>'1', /* plus $_COOKIE */ ); No conflict. [offtopic]Υποθέτω ότι θα έχεις τους λόγους σου για να χρησιμοποιείς jQuery για ένα απλό post...[/offtopic] 1
slevinkelevra Δημοσ. 6 Ιουλίου 2014 Μέλος Δημοσ. 6 Ιουλίου 2014 Α ναι ρε φιλε, τι γκαφα ηταν αυτη!!! Ευχαριστω. To αλλαξα σε <form method='post' id="some" action='some.php?d=2'> αλλαξα το variables_order = "GPCS" σε variables_order = "PGCS", επανεκινησα apache αλλα το some .php μου δινει ακομα πισω 1, αντι για 2 που ειναι το get, Που τωρα θα πρεπε να κανει overwrite το post. Γιατι? Καηκα.... Γιατι jquery για post? To ολο ψαξιμο ξεκινησε απο ενα παραδειγμα της jquery που διαβαζα και εμεινε ετσι το συγκεκριμενο snippet. Ετσι κ αλλιως δε παιζει κανα ρολο αυτο....
geomagas Δημοσ. 6 Ιουλίου 2014 Δημοσ. 6 Ιουλίου 2014 Α ναι ρε φιλε, τι γκαφα ηταν αυτη!!! Ευχαριστω. To αλλαξα σε <form method='post' id="some" action='some.php?d=2'> αλλαξα το variables_order = "GPCS" σε variables_order = "PGCS", επανεκινησα apache αλλα το some .php μου δινει ακομα πισω 1, αντι για 2 που ειναι το get, Που τωρα θα πρεπε να κανει overwrite το post. Γιατι? Καηκα.... Και το request_order; If this directive is not set, variables_order is used for $_REQUEST contents. Γιατι jquery για post? To ολο ψαξιμο ξεκινησε απο ενα παραδειγμα της jquery που διαβαζα και εμεινε ετσι το συγκεκριμενο snippet. Ετσι κ αλλιως δε παιζει κανα ρολο αυτο.... Τίποτα, απλά εννοούσα ότι ήταν ένα παραπάνω επίπεδο πολυπλοκότητας από αυτό που συζητούσαμε. 1
slevinkelevra Δημοσ. 6 Ιουλίου 2014 Μέλος Δημοσ. 6 Ιουλίου 2014 variables_order = "PGCS" , request_order = "PG" ολος ο υπολοιπος κωδικας ιδιος και συνεχιζει να μου δινει πισω 1 αντι για 2.
geomagas Δημοσ. 6 Ιουλίου 2014 Δημοσ. 6 Ιουλίου 2014 Sanity: Βάλε ένα echo ini_get('request_order'); πριν από το echo σου. Αν σου δίνει "PG" και το $_REQUEST['d'] συνεχίζει να είναι 1, τότε ή το php manual μας δουλεύει ή κάτι πάει στραβά με το σύστημά σου. 1
defacer Δημοσ. 6 Ιουλίου 2014 Δημοσ. 6 Ιουλίου 2014 TL;DR: Δεν υπάρχει καλός λόγος να χρησιμοποιήσεις τη $_REQUEST για οτιδήποτε, εκτός αν θεωρείς καλό λόγο το "βαριέμαι να σκέφτομαι".
slevinkelevra Δημοσ. 6 Ιουλίου 2014 Μέλος Δημοσ. 6 Ιουλίου 2014 Το echo ini _ get, γυρναει πισω "PG" και συνεχιζει να δινει 1. Αρα οντως ή το php manual μας δουλεύει ή κάτι πάει στραβά με το σύστημά μου. Ρε συ, μηπως δεν υπαρχει conflict ετσι κ αλλιως? Μηπως εκτελειται πρωτα το get και μετα το post επειδη το get ειναι στο action και το post "ερχεται" μετα? Η μηπως για να αλλαξουν το variables order και το request order δεν αρκει μονο ενα restart του apache? ελα ρε defacer, βοηθα και συ λιγο
defacer Δημοσ. 6 Ιουλίου 2014 Δημοσ. 6 Ιουλίου 2014 ελα ρε defacer, βοηθα και συ λιγο Απ' ότι βλέπω βάζεις το jquery να ρίξει άκυρο στο κανονικό submit event και κάνεις submit manually στο url "some.php" αντί για το "κανονικό" "some.php?d=2". Δεν είναι προφανές τι θα γίνει; Brainfart 2
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα