php sessions

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

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

Απάντηση
IzMbit
Δημοσιεύσεις: 72
Εγγραφή: 17 Ιαν 2009 16:23

php sessions

Δημοσίευση από IzMbit » 09 Ιαν 2010 01:20

Καλησπέρα, νέος στην πχπ και άρχισαν τα πρώτα προβλήματα... έχω φτιάξει μια φόρμα που ελέγχει απο μια βάση το username και το pass που εισάγεται. Προσπαθώ το log in αυτό να το "κρατήσω" σε ένα session.
Απλή φόρμα :

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

<form id="form1" name="form1" method="post" action="check.php">
  <p>Administrator Log in &#58; </p>
  <p>
  <label>Username&#58;	
    <input type="text" name="user" id="user" />
  </label>
  </p>
  <p>Password&#58; 
    <label>
      <input type="password" name="pass" id="pass" />
    </label>
  </p>
  <p>
    <label>
      <input type="submit" name="button" id="button" value="Submit" />
    </label>
  </p>
</form>
Check.php

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

<?php
session_start&#40;&#41;;
$user=$_POST&#91;'user'&#93;;
$pass=$_POST&#91;'pass'&#93;;
$valid_user=$user;
mysql_connect&#40;"localhost", "root", "root"&#41; or die&#40;mysql_error&#40;&#41;&#41;;
mysql_select_db&#40;"e-shop"&#41; or die&#40;mysql_error&#40;&#41;&#41;;
mysql_query&#40;$query = "select count&#40;*&#41; from Administrators where username = '$user' and password = '$pass'"&#41;;
$result = mysql_query&#40; $query &#41;;
if&#40;!$result&#41; &#123;
echo 'Cannot run query.';
exit;
&#125;
$count = mysql_result&#40; $result, 0, 0&#41;;
if &#40;$count > 0 &#41; &#123;
// visitor's name and password combination are correct
echo "<h1>welcome $user </h1>";
echo "<h1>Congraz !</h1>";
echo "You can move on....";
session_register&#40;"valid_user"&#41;;

echo "<a href=\"main.php\">main page</a>";

&#125;
else &#123;
// visitor's name and password combination are not correct
echo "<h1>Zong!</h1>";
echo "Wrong Username or Password!... .";
echo "<a href=\"main.php\">Back to main page</a>";	
&#125;
?>
αλλά όταν κάνω log in πέρνω

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

Warning&#58; Unknown&#58; Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0
οφείλεται στο session_register("valid_user"); σωστά? γιατί ?κάποια άλλη εναλλακτική να κάνω την ίδια δουλειά? μπορεί να μοιάζει απλό αλλα έχω κολλήσει κάτι ώρες

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

php sessions

Δημοσίευση από Apostolis_38 » 09 Ιαν 2010 14:33

Για δοκίμασε:

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

session_register &#40;$_SESSION&#91;"valid_user"&#93; = $valid_user &#41;;
Το $valid_user θα πρέπει να αντιστοιχεί στο $row['valid_user']

και στην επόμενη/επόμενες σελίδες θα "τραβάς" το session με

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

$valid_user = $_SESSION&#91;"valid_user"&#93;;

IzMbit
Δημοσιεύσεις: 72
Εγγραφή: 17 Ιαν 2009 16:23

php sessions

Δημοσίευση από IzMbit » 09 Ιαν 2010 22:29

Ευχαριστώ . ερώτημα άλλο,
προσπαθώ να φτιάξω ενα script που να κάνει update το stock σε ένα eshop.
έχω την φόρμα,

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

<?
session_start&#40;&#41;; ?>
<form action="updateST.php" method="post">
  <p>Product Name &#58;
  <input name="name" type="text" id="name">
  </p>
  <p>Initial Stock &#58; 
    <input name="stock" type="text" id="stock">
  </p>
  <p>
    <label>
      <input type="submit" name="button" id="button" value="Submit">
    </label>
  </p>
</form>
αλλά στο updateST.php που έχω

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

<?
session_start&#40;&#41;;
$stock=$_POST&#91;'stock'&#93;;
$name=$_POST&#91;'name'&#93;;

	mysql_connect&#40;"localhost", "root", "root"&#41; or die&#40;mysql_error&#40;&#41;&#41;;
	mysql_select_db&#40;"e-shop"&#41; or die&#40;mysql_error&#40;&#41;&#41;;
	$current = mysql_query&#40;"SELECT stock FROM Products WHERE product='$name'"&#41;;
	$current +=$stock;
	
mysql_query&#40;$sql="UPDATE Products SET Stock = '$current ' WHERE product ='$name'"&#41;;
	
?>
δεν μπορώ να κάνω δουλειά γιατι το $current πέρνει τιμή " Resource id #4 " άρα ότι και να δώσω ώς stock μου το εμφανίζει stock +4.
Τα φώτα σας παρακαλώ..

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

php sessions

Δημοσίευση από fafos » 09 Ιαν 2010 22:39

ti oraia pou tha htan h zoh an me ena query kaname ta panta!! :lol:

metra to query:

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

 $current = mysql_query&#40;"SELECT stock FROM Products WHERE product='$name'"&#41;;
$current=mysql_num_rows&#40;$current&#41;;
 $current =  $current + $stock; 
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

IzMbit
Δημοσιεύσεις: 72
Εγγραφή: 17 Ιαν 2009 16:23

php sessions

Δημοσίευση από IzMbit » 09 Ιαν 2010 22:49

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

<?
session_start&#40;&#41;;
$stock=$_POST&#91;'stock'&#93;;
$name=$_POST&#91;'name'&#93;;

	mysql_connect&#40;"localhost", "root", "root"&#41; or die&#40;mysql_error&#40;&#41;&#41;;
	mysql_select_db&#40;"e-shop"&#41; or die&#40;mysql_error&#40;&#41;&#41;;
	$current = mysql_query&#40;"SELECT stock FROM Products WHERE product='$name'"&#41;;
	$current=mysql_num_rows&#40;$current&#41;; 
	$current =  $current + $stock;
	echo $current;
	mysql_query&#40;$sql="UPDATE Products SET Stock = '$current ' WHERE product ='$name'"&#41;;
	
?>
έτσι διαγράφει το απόθεμα και αποθηκεύει κάθε φορά $stock +1 . γιατί +1 όμως ?

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

php sessions

Δημοσίευση από Apostolis_38 » 09 Ιαν 2010 23:10

Το Resource id #4 σημαίνει οτι κάνεις echo κάποια εντολή της php αντί για το αποτέλεσμα της εντολής.
Κι αφού σου φέρνει το id σημαίνει οτι το query φέρνει αποτέλεσμα, άρα δεν υπάρχει λάθος.
Αλλού είναι το πρόβλημα.
Πιθανώς κάπου έχεις δηλώσει κάποια μεταβλητή να παίρνει το νούμερο.
Η έχεις ξεχάσει να μηδενίσεις κάποια μεταβλητή

IzMbit
Δημοσιεύσεις: 72
Εγγραφή: 17 Ιαν 2009 16:23

php sessions

Δημοσίευση από IzMbit » 09 Ιαν 2010 23:16

Apostolis_38 έγραψε:Το Resource id #4 σημαίνει οτι κάνεις echo κάποια εντολή της php αντί για το αποτέλεσμα της εντολής.
Κι αφού σου φέρνει το id σημαίνει οτι το query φέρνει αποτέλεσμα, άρα δεν υπάρχει λάθος.
Αλλού είναι το πρόβλημα.
Πιθανώς κάπου έχεις δηλώσει κάποια μεταβλητή να παίρνει το νούμερο.
Η έχεις ξεχάσει να μηδενίσεις κάποια μεταβλητή
με το

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

$current=mysql_num_rows&#40;$current&#41;; 
 $current =  $current + $stock;
που μου έδωσε ο fafos πέρνει το νούμερο αλλά το $current είναι 1 κάθε φορά και δεν πέρνει την τιμή που πρέπει.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

php sessions

Δημοσίευση από Apostolis_38 » 09 Ιαν 2010 23:20

Ναι, αν και μεγαλύτερος είναι πιο γρήγορος :D
Κάνε echo όλες τις μεταβλητές να δείς που είναι το πρόβλημα.
Δεν μπορεί να φέρνει το 1 επειδή δεν έχει τι να κάνει.
Απο κάπου το τραβάει.

Πολύ πιθανόν να είναι από κάποιο κομμάτι κώδικα που δεν έχεις postάρει.

IzMbit
Δημοσιεύσεις: 72
Εγγραφή: 17 Ιαν 2009 16:23

php sessions

Δημοσίευση από IzMbit » 09 Ιαν 2010 23:26

αν κτλβα σωστά , έτσι όπως είναι τώρα μετράει πόσες φορές είναι καταχωρημένο το item1 στον πίνατα και αυτό πιάνει ως $current και το προσθετει στο stock που του δίνω. το num_rows απο το όνομα φαίνεται να το κάνει αυτό ?

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

php sessions

Δημοσίευση από dva_dev » 09 Ιαν 2010 23:26

Απο κάπου το τραβάει
Από τον αριθμό των εγγραφών που φέρνει το query.

Υπάρχει κάποιος λόγος που γίνεται ένα select και μετά ένα update αντί να γίνει μόνο ένα update? Χρησιμοποιείται κάπου το $current για να εμφανιστεί κάπου αλλού;

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

php sessions

Δημοσίευση από fafos » 09 Ιαν 2010 23:28

to stock me to Stock exoun diafora gia thn mysql..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

php sessions

Δημοσίευση από fafos » 09 Ιαν 2010 23:38

an to stock einai enas arithmos mesa sthn vash aplos kaneis to query etsi:

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

   $current = mysql_query&#40;"SELECT stock FROM Products WHERE product='$name'"&#41;;
   $current=mysql_db_query&#40;$current&#41;;
   $current =  $current&#91;stock&#93; + $stock; 
pantos to WHERE product='$name' einai epikyndino.. kalytera na zhtas thn eggrafh me kapoio monadiko id..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

IzMbit
Δημοσιεύσεις: 72
Εγγραφή: 17 Ιαν 2009 16:23

php sessions

Δημοσίευση από IzMbit » 09 Ιαν 2010 23:50

dva_dev έγραψε:
Απο κάπου το τραβάει
Από τον αριθμό των εγγραφών που φέρνει το query.

Υπάρχει κάποιος λόγος που γίνεται ένα select και μετά ένα update αντί να γίνει μόνο ένα update? Χρησιμοποιείται κάπου το $current για να εμφανιστεί κάπου αλλού;
χρησιμοποιείται για να μετρήσει το υπάρχον stock ώστε να προσθεθεί πάνω σε αυτό το στοκ που συμπληρώνουμε.

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

php sessions

Δημοσίευση από Apostolis_38 » 09 Ιαν 2010 23:57

Το mysql_num_rows φέρνει το πλήθος των εγγραφών που περιέχουν το stock.
Το υπάρχων stock θα στο δείξει ένα loop όπου θα εμφανίζεις το $row["stock"]

IzMbit
Δημοσιεύσεις: 72
Εγγραφή: 17 Ιαν 2009 16:23

php sessions

Δημοσίευση από IzMbit » 09 Ιαν 2010 23:59

ο πίνακας Products έχει μέσα product_id , stock , product.
απο την φόρμα γράφουμε πιο product θέλουμε να συμπληρώσουμε κομμάτια. μπορώ να αποφύγω το να πρέπει να γράφει ο χρήστης το όνομα του product (βλ. $name) αλλά να υπάρχει μια λίστα με τα products που έχει ο πίνακας και να επιλέγω μόνο τα κομμάτια που θέλω να προσθεθούν? ?

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

 Warning&#58; mysql_db_query&#40;&#41; expects at least 2 parameters, 1 given in /Users/IzMbit/Sites/dw/updateST.php on line 9

Line 9 : $current=mysql_db_query($current);

Απάντηση

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

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

Μέλη σε αυτήν τη Δ. Συζήτηση: ss13 και 0 επισκέπτες