$_GET και $_POST (ΜΑΘΗΜΑ 8)

...ασύγχρονα μαθήματα γλώσσας PHP

$_GET και $_POST (ΜΑΘΗΜΑ 8)

Δημοσίευσηαπό M.Jackson » 13 Ιουν 2012, 16:34

ΜΑΘΗΜΑ 8 - $_GET & $_POST


Σε αυτό το μάθημα θα δούμε 2 πολλή σημαντικές μεταβλητές οι οποίες θα είναι σχεδόν πάντα παρόν στα προγράμματα σας. Είναι κάποιες δεσμευμένες λέξεις: $_POST και το $_GET.

Γενικά αυτές οι δυο μεταβλητές κάνουν το ίδιο πράγμα αλλά διαφορετικά! Και οι δυο είναι απαραίτητες γιαυτό άλλωστε υπάρχουν. Και οι δυο χρειάζονται HTML για να μπορέσουν να υπάρξουν, αυτό σημαίνει ότι βάση μιας HTML φόρμας θα πάρουμε κάποια δεδομένα που έδωσε ο χρήστης σε κάποιο πεδίο ή γενικά σε κάποιο input στοιχείο. Η $_GET μπορεί να δουλέψει και διαφορετικά εκτός από τα input forms.

$_GET

Έχουμε τον πιο κάτω κώδικα στην HTML
Μορφοποιημένος Κώδικας: Επιλογή όλων
<form action="index.php" method="get">
Name: <input type="text" name="name" />
<input type="submit" />
</form>


Ανάλυση:
    action="index.php" αυτό εδώ δείχνει στον browser σε ποιο αρχείο θα παραδώσει τις πληροφορίες που έδωσε ο χρήστης.
    method="get" Αυτό δηλώνει ότι η μέθοδος που θα γίνει η παράδοση των δεδομένων θα είναι η GET

Έτσι τώρα ξέρουμε ότι η φόρμα αυτή θα δώσει στο αρχείο index.php της πληροφορίες που θα διαβάσει όταν πατηθεί το κουμπί Submit. H μεταφορά αν θέλετε τον δεδομένων θα γίνει με την μέθοδο GET. Τι σημαίνει; Θα το δούμε τώρα.

Ουσιαστικά η μέθοδος GET παίρνει το αρχείο που θα γίνει η μεταφορά (βλέπε το action="index.php") το δίνει στο URL Bar του Browser μας δίπλα από το URL που τώρα θα είναι http://localhost/index.php κολλάει το αγγλικό ερωτηματικό ?δηλαδή θα έχουμε το εξής: http://localhost/index.php?
Στην συνέχεια βρίσκει τα αντικείμενα που έχει η φόρμα που μπορεί να είναι: Textboxes, Combo Box, Password Boxes, Check Boxes κτλ και παραχωρεί το όνομα που θέσαμε στο URL ακολουθούμενο από το = και το περιεχόμενο που έδωσε ο χρήστης.

Στο παράδειγμα μας θα είναι: http://localhost/index.php?name=M.Jackson/ βλέπουμε ότι μετά από το ερωτηματικό έρχεται το όνομα του αντικειμένου που εμείς θέσαμε μπορούσε το όνομα του text box να ήταν txt1, και στο URL να είχαμε txt1=M.Jackson. Σε περίπτωση που είχαμε περισσότερα από ένα αντικείμενα π.χ 3 textboxes θα ήταν κάπως έτσι: http://localhost/index.php?txt1=M.Jacks ... ?txt3=php/

Στο αρχείο μας θα παίρνουμε εμείς αυτές τις 3 τιμές και θα τις παρουσιάζουμε:
Μορφοποιημένος Κώδικας: Επιλογή όλων
<?php

$var1 = $_GET['txt1'];
$var2 = $_GET['txt2'];
$var3 = $_GET['txt3'];

echo $var1.'<br>';
echo $var2.'<br>';
echo $var3.'<br>';
?>


Βλέπετε εκχωρούμε σε μια μεταβλητή τα δεδομένα. $_GET['txt1'], ανάμεσα στα εισαγωγικά βάζουμε το όνομα που βάλαμε στην φόρμα ή γενικά το όνομα που υπάρχει στο URL. Αν είχαμε http://localhost/index.php?name=M.Jackson και θέλαμε το M.Jackson τότε θα γράφαμε $_GET['name'];.

Είναι πραγματικά εξαιρετικά εύκολο να στέλνουμε δεδομένα με αυτό τον τρόπο, όπως ανάφερα και ποιο πάνω αυτή η μέθοδος δεν λειτουργεί μόνο με την φόρμα της HTML αλλά μπορεί να μας λύσει τα χέρια και σε ένα άλλο παράδειγμα: Να το πάρουμε απλά, εδώ στο φόρουμ της κοινότητας μας έχουμε το εξής Hyperlink όταν πατάμε στο όνομα ενός θέματος/topic viewtopic.php?f=64&t=19020, βλέπεται έχουμε το f και το t, αυτά δεν τα δώσαμε εμείς, σωστά; Βασικά ο προγραμματιστής του φορουμ έφτιαξε στην σελίδα την αναζήτηση αν κάνουμε search για κάτι θα μας επιστραφεί πίσω ένας υπερ-σύνδεσμος για να μπορέσουμε να πατήσουμε πάνω για να ανοίξουμε το θέμα αυτό, έτσι εκμεταλλεύεται και φτιάχνει το URL του με τέτοιο τρόπο έτσι ώστε μετά να χρησιμοποιήσει την μέθοδο GET για να "καταλάβει" ποιο θέμα πάμε να ανοίξουμε. Για παράδειγμα δείτε το κάπως έτσι:
Ο προγραμματιστής του φόρουμ με κάποιο αλγόριθμο ψάχνει στην βάση δεδομένων για την λέξη κλειδί που αναζητούμε εμείς όταν βρει κάποιο θέμα που ταιριάζει τότε τυπώνει κάπως έτσι: <a href="http://forum.ubuntu-gr.org/viewtopic.php?f=$variable&t=$variable2" και όταν τελειώσει αυτό το loop θα έχουμε εμείς το αποτέλεσμα αυτό. Στην συνέχεια όταν πατήσουμε τον υπερ-σύνδεσμο ο οποίος οδηγεί στο viewtopic.php, τότε ο προγραμματιστής παίρνει το ID του topic (με το $_GET π.χ $id = $_GET['f'];) για να κάνει αναζήτηση μετά και να μας παρουσιάσει το κείμενο του topic.

$_POST

Αυτή η μέθοδος κάνει το ίδιο περίπου πράγμα με την μέθοδο $_GET η μόνη διαφορά είναι ότι δεν τα εμφανίζει στο URL. Αν αναροτιέστε που μπορεί να χρησιμέυσει αυτό η απάντηση είναι σε συστήματα σύνδεσης/login όπου ο κωδικός μας δεν θέλουμε να εμφανίζεται στο URL.

HTML:
Μορφοποιημένος Κώδικας: Επιλογή όλων
<form action="index.php" method="post">
Name: <input type="text" name="name" />
<input type="submit" />
</form>


Αυτή τη φορά το URL δεν αλλάζει απλά τα δεδομένα μας μεταφέρονται στο αρχείο προορισμού: index.php (action=""). Πιο κάτω έχουμε τον κώδικα σε PHP που διαβάζει αυτές τις τιμές:

Μορφοποιημένος Κώδικας: Επιλογή όλων
<?php
$name = $_POST['name'];
echo $name;
?>


Εδώ βλέπουμε ότι το όνομα μέσα στα εισαγωγικά του $_POST[''] μπαίνει το όνομα που θέσαμε στην HTML <input type="text" name="name" />.
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

Re: $_GET και $_POST (ΜΑΘΗΜΑ 8)

Δημοσίευσηαπό kala » 17 Νοέμ 2014, 17:47

Θεωριτηκα μιαζουν ενταξη δες αυτο :
Κώδικας: Επιλογή όλων
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta charset="UTF-8">
<head>
<title> color sampler</title>
</head>
<body>
<h2>  color sampler </h2>
<from  method="get" action="/opt/lampp/htdocs/display.php">
R: <input type="text" name="r" size="3"/> <p/>
G:<input type="text" name="g" size="3" /> <p/>
B:<input type="text" name="b" size="3" /> <p/>
<input type="submit" value="show me"  />
</from>
</body>
</html>

php αρχειο :
Κώδικας: Επιλογή όλων
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<meta charset="UTF-8">
<head>
<title> color sampler</title>
</head>
<body>
<h2>  color sampler </h2>
<?php
//
$r = $_GET['r'];
$g = $_GET['g'];
$b = $_GET['b'];
//
$rgb= "$r . ',' . $g . ',' . $b" ;
?>
R: <?php echo $r; ?>
G: <?php echo $g;?>
B: <?php echo $b;?>
<p/>
<div style="width:150px; heigh:150px; background-color:rgb(<?php echo $rgb; ?>)" />
</body>
</html>

Τωρα δες τα σφαλαματα του περιγητη :
Κώδικας: Επιλογή όλων
color sampler

Notice: Undefined index: r in /opt/lampp/htdocs/display.php on line 11

Notice: Undefined index: g in /opt/lampp/htdocs/display.php on line 12

Notice: Undefined index: b in /opt/lampp/htdocs/display.php on line 13
R: G: B:


τι κανω , γενικος εχω προβλημα με την συνδεση αρχειων php to html
Τελευταία επεξεργασία από the_eye και 17 Νοέμ 2014, 21:06, έχει επεξεργασθεί 1 φορά/ες συνολικά
Αιτία: Τον κώδικα τον βάζουμε σε [code] bbcode
PC Ubuntu 14.04 trusty
https://gist.github.com/93111fe36c56e8ee38e3
laptop Ubuntu 14.04 trusty
2 Intel Celeron CPU N2840 2.16GHz ‖ RAM 3836 MiB ‖ Dell Inc. 04XH5N - Dell Inc. Inspiron 3551
3 Intel ValleyView Gen7 [8086:0f31] {i915}
4 wlan0: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter [168c:0036] (rev 01)
Άβαταρ μέλους
kala
babeTUX
babeTUX
 
Δημοσιεύσεις: 121
Εγγραφή: 07 Φεβ 2011, 01:30
Εκτύπωση

Re: $_GET και $_POST (ΜΑΘΗΜΑ 8)

Δημοσίευσηαπό kala » 17 Νοέμ 2014, 17:57

αν δεν ειναι προβλημα το παραπανω γιτι δεν περνη τα δεδομενα της φορμας και δεν τα εμφανηζη !
PC Ubuntu 14.04 trusty
https://gist.github.com/93111fe36c56e8ee38e3
laptop Ubuntu 14.04 trusty
2 Intel Celeron CPU N2840 2.16GHz ‖ RAM 3836 MiB ‖ Dell Inc. 04XH5N - Dell Inc. Inspiron 3551
3 Intel ValleyView Gen7 [8086:0f31] {i915}
4 wlan0: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter [168c:0036] (rev 01)
Άβαταρ μέλους
kala
babeTUX
babeTUX
 
Δημοσιεύσεις: 121
Εγγραφή: 07 Φεβ 2011, 01:30
Εκτύπωση


Επιστροφή στο Μαθήματα PHP

cron