form to database

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

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

Απάντηση
esifis
Δημοσιεύσεις: 6
Εγγραφή: 19 Μάιος 2004 23:41

form to database

Δημοσίευση από esifis » 20 Μάιος 2004 00:05

Κύριοι γεια χαρά σας
Έχω φτιάξει μια φόρμα ή οποία στέλνει κάποια στοιχεία σε ένα αρχείο wish.php, τα οποία καταχωρούνται σε μια database mysql.

<form name="product_wish" action="wish.php" method="post">
<input type="text" name="product" size="10" maxlength="64" style="width: 125px">
<input name="go" type="submit" value="Go">

Ερώτηση 1.
Τί πρέπει να χρησιμοποιήσω για να προετοιμάσω το string για να μην έχω καμιά τρύπα ασφαλείας:
Strip_tags , stripslashes ή htmlspecialchars.

Ερώτηση 2.

Με action="post" που χρησιμοποιώ για να στείλω στο wish.php, έχω το προβλημα ότι αφού έχει ολοκληρωθεί η διαδικασία αν κάνω refresh στον browser (ενώ βρίσκομαι ακόμα στην σελίδα και κάθε φορά που θα ξανακάνω κάνω refresh), δημιουργήται νέα εγγραφή.
Τι μπορώ να κάνω.

wish.php
...
...
...
if ($go=="Go" || isset ($product))
{
mysql_query("INSERT INTO wish (product, date_added, customer, full_name, ip_address) VALUES ('$product', '$date', '$customer', '$full_name', '$ip_address')");

unset($_POST);// το unset δεν δουλευει
?>
<h4>Μας προτείνατε :</h4>
<? echo '<h3>'.$product.'</h3>'; ?>
<h4>Ευχαριστούμε για την πρόταση σας.</h4>
<? unset ($product);

}else{
echo "<h2>Παρακαλώ συμπληρώστε το πεδίο</h2>";
}
?>
...
...
...
Καμιά ιδέα
Ευχαριστώ

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

form to database

Δημοσίευση από ThyClub » 20 Μάιος 2004 00:19

Εφόσων κρατάς την ΙΡ του χρήστη μπορείς να κάνεις ενα :
$check=mysql_query("select * from wish where ip_address='$ip_address' and product='$product'");

$result=mysql_num_rows($check);

if($check!=0)
{
echo "Product already submited";
}
else
{
...
...
//Εδώ συνεχίζει ο κώδικας σου
}
Eλπίζω να βοήθησα

Άβαταρ μέλους
Tanaka
Δημοσιεύσεις: 174
Εγγραφή: 27 Απρ 2004 21:40
Τοποθεσία: Κορωπί

form to database

Δημοσίευση από Tanaka » 20 Μάιος 2004 09:27

esifis έγραψε:Ερώτηση 2.

Με action="post" που χρησιμοποιώ για να στείλω στο wish.php, έχω το προβλημα ότι αφού έχει ολοκληρωθεί η διαδικασία αν κάνω refresh στον browser (ενώ βρίσκομαι ακόμα στην σελίδα και κάθε φορά που θα ξανακάνω κάνω refresh), δημιουργήται νέα εγγραφή.
Τι μπορώ να κάνω.
Αφού κάνεις το insert στην βάση σου κάνε redirect σε άλλη σελίδα. Έτσι ακόμα και αν κάνει κάποιος refresh δεν θα δημιουργεί διπλές εγγραφές.

esifis
Δημοσιεύσεις: 6
Εγγραφή: 19 Μάιος 2004 23:41

form to database

Δημοσίευση από esifis » 21 Μάιος 2004 00:51

$check=mysql_query("select * from wish where ip_address='$ip_address' and product='$product'");

$result=mysql_num_rows($check);

if($check!=0)
{
echo "Product already submited";
}
else
{
...
...
//Εδώ συνεχίζει ο κώδικας σου
}
Πολύ καλή λύση με μοναδική διόρθωση ότι το if($check!=0) πρέπει να γίνει if($result!=0) για να δουλέψει, και με αυτόν τον τρόπο μπορείς και να καθορίσεις και μέγιστο αριθμό καταχωρήσεων ανα ip ανά ημέρα.

Γενικά πάντως αυτή η διαδικασία ακολουθείται? Δεν υπάρχει τρόπος να γινει reset στο post μετά την καταχώρηση?

Σας ευχαριστώ πολύ..

Άβαταρ μέλους
Cha0s
SysAdmin
Δημοσιεύσεις: 10242
Εγγραφή: 28 Ιούλ 2001 03:00

form to database

Δημοσίευση από Cha0s » 21 Μάιος 2004 10:27

Μπορείς στην ουσία να ξεγελάσεις τον χρήστη, τον IE την γκόμενα του ή δεν ξέρω και εγώ τι άλλο χρησιμοποιώντας την function Header() όπου μόλις γίνει η εισαγωγή της εγγραφής μπορείς να κάνεις redirect τον χρήστη στην ίδια σελίδα στην ουσία δίνοντας ένα arguement όπου με ένα παρακάτω έλεγχο μπορείς να βάλεις να εμφανίζει το μήνυμα σωστής καταχώρησης εφόσων είναι αληθές το arguement που πέρασες με GET...

Ελπίζω να κατάλαβες τι εννοώ...


Με το unset ($_POST); αδειάζεις το array $_POST στην ουσία αλλά αυτό γίνεται σε επίπεδο server και όχι client άρα ο Browser μένει ακόμα με το post και μόλις κάνεις refresh ξαναστέλνει τα δεδομένα του post.

Αυτα...

Απάντηση

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

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

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