Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπερα

 

Βλεπω ενα παραδειγμα που λεει για 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?

 

Ευχαριστω

Δημοσ.

Πιο γρήγορη ή ασφαλή, όχι. Απλά σου προσφέρει ένα abstraction: Αντί να χρειάζεται να ξέρεις από που ήρθε η τάδε request parameter (get, post ή cookie) τις βρίσκεις όλες μέσα στο $_REQUEST και καθαρίζεις. Θα πρέπει όμως να ξέρεις πως γίνεται το conflict resolution.

  • Like 1
Δημοσ.

Επειδη παιζει να μη καταλαβα εννοείς να εχω στο 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 αυτο?

Δημοσ.

Επειδη παιζει να μη καταλαβα εννοείς να εχω στο 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'].

  • Like 1
Δημοσ.

Αχα, οκ

Κατι τελευταιο, η τελευταια φορμα εχει get και post μαζι επειδη στο action της εχει data μετα το "?"

Ακριβώς.

  • Like 1
Δημοσ.

Αρα ειμαστε 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.

Εκτος αν το καταλαβα παλι λαθος....

Δημοσ.

Πρωτα βλεπει το 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]

  • Like 1
Δημοσ.

Α ναι ρε φιλε, τι γκαφα ηταν αυτη!!! Ευχαριστω. 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. Ετσι κ αλλιως δε παιζει κανα ρολο αυτο....

Δημοσ.

Α ναι ρε φιλε, τι γκαφα ηταν αυτη!!! Ευχαριστω. 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. Ετσι κ αλλιως δε παιζει κανα ρολο αυτο....

Τίποτα, απλά εννοούσα ότι ήταν ένα παραπάνω επίπεδο πολυπλοκότητας από αυτό που συζητούσαμε.

  • Like 1
Δημοσ.

Sanity: Βάλε ένα echo ini_get('request_order'); πριν από το echo σου.

 

Αν σου δίνει "PG" και το $_REQUEST['d'] συνεχίζει να είναι 1, τότε ή το php manual μας δουλεύει ή κάτι πάει στραβά με το σύστημά σου.

  • Like 1
Δημοσ.

TL;DR: Δεν υπάρχει καλός λόγος να χρησιμοποιήσεις τη $_REQUEST για οτιδήποτε, εκτός αν θεωρείς καλό λόγο το "βαριέμαι να σκέφτομαι".

Δημοσ.

Το echo ini _ get, γυρναει πισω "PG" και συνεχιζει να δινει 1. Αρα οντως ή το php manual μας δουλεύει ή κάτι πάει στραβά με το σύστημά μου. 

Ρε συ, μηπως δεν υπαρχει conflict ετσι κ αλλιως? Μηπως εκτελειται πρωτα το get και μετα το post επειδη το get ειναι στο action και το post "ερχεται" μετα?

 

Η μηπως για να αλλαξουν το variables order  και το request order δεν αρκει μονο ενα restart του apache?

 

ελα ρε defacer, βοηθα και συ λιγο  :-D

Δημοσ.

ελα ρε defacer, βοηθα και συ λιγο  :-D

 

Απ' ότι βλέπω βάζεις το jquery να ρίξει άκυρο στο κανονικό submit event και κάνεις submit manually στο url "some.php" αντί για το "κανονικό" "some.php?d=2". Δεν είναι προφανές τι θα γίνει;

 

Brainfart  :P

  • Like 2

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...