$_post ΜΕΣΑ ΣΕ function

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

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

Απάντηση
jimvrasna
Δημοσιεύσεις: 48
Εγγραφή: 21 Απρ 2006 23:57
Τοποθεσία: ΜΑΚΡΙΑ ΜΑΚΡΙΑ
Επικοινωνία:

$_post ΜΕΣΑ ΣΕ function

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

ΕΧΩ
function func()
{
$var1=$_POST["var1"];
if($var1="yes")
{
.......
}
ΑΛΛΑ ΔΕΝ ΤΡΕΧΕΙ
ΔΟΚΙΜΑΣΑ ΝΑ ΠΕΡΑΣΩ ΚΑΙ ΤΗΝ _POST ΣΑΝ ΟΡΙΣΜΑ ΠΑΛΙ ΟΧΙ
ΠΟΥ ΕΙΝΑΙ ΤΟ ΠΡΟΒΛΗΜΑ?
ΝΑ ΠΕΡΑΣΤΟΥΝ ΟΛΕΣ ΟΙ ΜΕΤ ΩΣ ΟΡΙΣΜΑΤΑ ΔΕΝ ΓΙΝΕΤΕ ΓΙΑΤΙ ΕΙΝΑΙ ΠΟΛΛΕΣ ΚΑΙ ΧΩΡΙΣ ΣΤΑΘΕΡΟ ΑΡΙΘΜΟ
}

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

$_post ΜΕΣΑ ΣΕ function

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

Άλλαξε το

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

if ($var1="yes")
με αυτό:

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

if ( $var1 == "yes" )

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

$_post ΜΕΣΑ ΣΕ function

Δημοσίευση από Banavas » 08 Αύγ 2007 00:04

Η απάντηση του _Invisible_ είναι σωστή.
Απλά για να το καταλάβεις καλύτερα το μονό = ορίζει τιμή στην μεταβλητή ενώ το διπλό == συγκρίνει τις δύο τιμές.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
tix-3-
Δημοσιεύσεις: 827
Εγγραφή: 25 Μαρ 2004 05:12
Τοποθεσία: Θεσσαλονικη-Καβαλα-βεροια(το τριγωνο της καταρας)
Επικοινωνία:

$_post ΜΕΣΑ ΣΕ function

Δημοσίευση από tix-3- » 08 Αύγ 2007 15:03

Επισης δεν ειναι σωστη τακτικη να παιρνεις απο το $_post κατευθειαν τιμες χωρις προτερη επεξεργασια.Τουλαχιστον αν θελεις να ειναι το site σου εκει και αυριο :oops:
Αν δεν υπήρχανε οι κνίτες κι'η ηρωίνη...

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

$_post ΜΕΣΑ ΣΕ function

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

Ο Banavas το εξήγησε καλύτερα. Λάθος μου που δεν έδωσα full description, αλλά δεν πειράζει. Θα το κάνω τώρα :P

Όπως λέει και ο tix-3- πρέπει να "φιλτράρεις" τα δεδομένα που παίρνεις από μία φόρμα γιατί μπορεί να μην είναι αυτό που περιμένεις. Πολλά functions της PHP μπορούν να κάνουν αυτή τη δουλειά για σένα.

Για παράδειγμα μην κάνεις μια σελίδα που να μην ελέγχει αν έχει υποβληθεί η φόρμα και απλώς να κάνει τις απαραίτητες ενέργειες...

Έλεγξε αν έχει υποβληθεί η φόρμα:
form.html

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

<form action="form.php" method="post">
Username&#58; <input type="text" name="client_username" maxlength="25" /><br />
Password&#58; <Input type="password" name="user_password" maxlength="20" /><br />
<input type="submit" name="submit_form" value="Login !" />
</form>
form.php

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

<?php

if &#40; !isset&#40;$_POST&#91;'submit_form'&#93;&#41; &#41;
&#123;
   // Form hasn't been submitted.
   die&#40;"Please submit the form."&#41;;
&#125;
else
&#123;
    if &#40; isset&#40;$_POST&#91;'client_username'&#93;&#41; && !empty&#40;$_POST&#91;'client_username'&#93;&#41; &#41;
    &#123;
       $submit_username = htmlspecialchars&#40;trim&#40;stripslashes&#40;$_POST&#91;'username'&#93;&#41;&#41;&#41;;

        // elegxos me8egos pediou&#58; 25
       if &#40; strlen&#40;$submit_username&#41; > 25
       &#123;
          die&#40;"Username field is too big."&#41;;
       &#125;

    &#125;
    else
    &#123;
       die&#40;"Please enter your username."&#41;;
     &#125;

    if &#40; isset&#40;$_POST&#91;'user_password'&#93;&#41; && !empty&#40;$_POST&#91;'user_password'&#93;&#41; &#41;
    &#123;
        $submit_password = htmlspecialchars&#40;trim&#40;stripslashes&#40;$_POST&#91;'user_password'&#93;&#41;&#41;&#41;;

       // elegxos me8egos pediou&#58; 20
      if &#40; strlen&#40;$submit_password&#41; > 20 &#41;
      &#123;
         die&#40;"Password field is too big."&#41;;
       &#125;

    &#125;
    else
    &#123;
       die&#40;"Please enter your password."&#41;;
    &#125;

    // afou exoun olokliro8ei oloi oi elegxoi, tote poli apla ekteleis px kapoio query sou h kaneis kapoia alli energeia.

&#125;

?>

jimvrasna
Δημοσιεύσεις: 48
Εγγραφή: 21 Απρ 2006 23:57
Τοποθεσία: ΜΑΚΡΙΑ ΜΑΚΡΙΑ
Επικοινωνία:

$_post ΜΕΣΑ ΣΕ function

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

ΗΘΕΛΑ ΝΑ ΓΡΑΨΩ if($var1=="yes")
ΑΛΛΑ ΞΕΧΑΣΑ ΤΟ ΔΙΠΛΟ ΙΣΟΝ.
ΤΟ ΠΡΟΒΛΗΜΑ ΜΟΥ ΕΙΝΑΙ ΟΤΙ ΜΕΣΑ ΣΤΗΝ FUNCTION ΔΕΝ ΒΛΕΠΕΙ ΤΗΝ $_POST.
ΩΡΑΙΟΣ Ο ΚΩΔΙΚΑΣ ΓΙΑ ΤΗΝ ΑΦΑΙΡΕΣΗ HTML TAGS ΘΑ ΤΟΝ ΕΦΑΡΜΟΣΩ

ΕΥΧΑΡΙΣΤΩ ΠΟΛΥ!!!!!

Άβαταρ μέλους
MaZz
Script Master
Δημοσιεύσεις: 345
Εγγραφή: 20 Ιούλ 2005 19:41
Τοποθεσία: Beyond the dark sun
Επικοινωνία:

$_post ΜΕΣΑ ΣΕ function

Δημοσίευση από MaZz » 08 Αύγ 2007 21:54

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

function func&#40;&#41;
&#123;
   global $_POST;
   .....
&#125;
gia na vlepeis mia e3wterikh metavlhth mesa sthn sinartish prepei na xrhshmopoihseis to: global [metavlhth] ;)
If nothing in the world can change our children will inherit nothing.

katerina1123
Δημοσιεύσεις: 216
Εγγραφή: 11 Απρ 2007 03:02

$_post ΜΕΣΑ ΣΕ function

Δημοσίευση από katerina1123 » 09 Αύγ 2007 17:21

Σελίδα 122 ε mazz? :D
xexexe!!!

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

$_post ΜΕΣΑ ΣΕ function

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

Έλα βρε Mazz, αφού δουλεύει σε μένα χωρίς το global. Δεν μπορώ να καταλάβω γιατί είναι απαραίτητο. Κανονικά η PHP θα έπρεπε να το "διαβάσει" το _POST, χωρίς την χρήση global -- αφού είναι super-global μεταβλητή.

Πάντως σε 'μένα δουλεύει χωρίς global $_POST;

Έχεις καμιά ιδέα τι μπορεί να παίζει και να χρειάστηκε global $_POST; ?

Άβαταρ μέλους
MaZz
Script Master
Δημοσιεύσεις: 345
Εγγραφή: 20 Ιούλ 2005 19:41
Τοποθεσία: Beyond the dark sun
Επικοινωνία:

$_post ΜΕΣΑ ΣΕ function

Δημοσίευση από MaZz » 10 Αύγ 2007 19:44

katerina1123 έγραψε:Σελίδα 122 ε mazz?
xexexe!!!
Kala ta pas :o :D
_Invisible_ έγραψε:Έλα βρε Mazz, αφού δουλεύει σε μένα χωρίς το global. Δεν μπορώ να καταλάβω γιατί είναι απαραίτητο. Κανονικά η PHP θα έπρεπε να το "διαβάσει" το _POST, χωρίς την χρήση global -- αφού είναι super-global μεταβλητή.

Πάντως σε 'μένα δουλεύει χωρίς global $_POST;

Έχεις καμιά ιδέα τι μπορεί να παίζει και να χρειάστηκε global $_POST; ?
Koita h alh8eia einai oti den einai o kalyteros tropos na diavazeis global vars mesa se functions. Asfalws kai den 8a to ekana me ayton ton tropo. 8a to ekana me function arguments kapws etsi:

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

<?php
    function func&#40;$val&#41; &#123;
        echo $val;
    &#125;
    func&#40;$_POST&#91;'val'&#93;&#41;;
?>
malon gia afton ton tropo den sou doulevei. Kanonika ka8e metavlhth pou dilwnetai e3w apo thn function gia na diavastei mesa se ayth prepei na thn dhlwseis ws global. check http://www.php.net/manual/en/language.f ... .php#31954
If nothing in the world can change our children will inherit nothing.

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

$_post ΜΕΣΑ ΣΕ function

Δημοσίευση από cpulse » 14 Αύγ 2007 20:54

Πράγματι είναι καλό να μην χρησιμοποιούμε global variables μέσα σε functions.

Παρόλα αυτά έχει δίκιο ο _Invisible_, η $_POST είναι "super-global" μεταβλητή. Δεν χρειάζεται την βοήθεια της global.

Ή ο OP έκανε κάποιο μικρό τυπογραφικό λαθάκι στο $_POST ή χρησιμοποιεί πολύ παλιές εκδόσεις της PHP. Αν έχει παλιά έκδοση της PHP μπορεί να το αντιμετωπίσει έτσι:

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

function func&#40;&#41; &#123;
  if &#40;!isset&#40;$_POST&#41;&#41; $_POST = &$HTTP_POST_VARS;

  ...

&#125;

Απάντηση

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

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

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