Re: PHP-->on MyMarket can not get username variable value from session.
| From: | Ricky Tompu Breaky | Date: | Tue, 01 Sep 2009 23:03:34 +0000 |
| Subject: | Re: PHP-->on MyMarket can not get username variable value from session. | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-297590@lists.php.net to get a copy of this message | ||
Dear Shawn.
Hooray, you've solved my problem. Thank you....very....very....much.
I really appreciate it.
Thanks, Buddy.
===
On Tue, 01 Sep 2009 16:22:39 -0500
Shawn McKenzie <nospam@mckenzies.net> wrote:
> Ricky Tompu Breaky wrote:
> > Dear my friends,
> >
> > I am learning a PHP implementation with MyMarket now. I got it from
> >
> > http://sourceforge.net/projects/mymarket/files/mymarket/mymarket-1.72/mymarket-1.72.tar.gz/download
> > .
> >
> > I have installed and configured its
> > '/var/www/html/mymarket/application.php' to the login account of my
> > MySQL and I've been able to do login:
> > "
> > <?
> > /* $RCSfile: application.php,v $ (c) 2000 Ying Zhang
> > (ying@zippydesign.com)
> > *
> > * $Revision: 1.7 $
> > * $Date: 2002/09/23 17:31:17 $
> > * $Author: yingz $
> > *
> > error_reporting(15);
> > class object {};
> > $CFG = new object;
> > $CFG->dbhost = "localhost";
> > $CFG->dbname = "mymarket";
> > $CFG->dbuser = "mymarket";
> > $CFG->dbpass = "mypassword";
> > $CFG->wwwroot = "http://127.0.0.1/mymarket";
> > $CFG->dirroot = dirname(__FILE__);
> > $CFG->templatedir = "$CFG->dirroot/templates";
> > $CFG->libdir = "$CFG->dirroot/lib";
> > $CFG->imagedir = "$CFG->wwwroot/images";
> > $CFG->icondir = "$CFG->imagedir/icons";
> > $CFG->bannerdir = "$CFG->imagedir/banners";
> > $CFG->support = "support@mymarket.org";
> > $CFG->version = "1.71";
> > $CFG->sessionname = "mymarket";
> >
> > $CFG->showsponsor = true; // enabled banner
> > advertising $CFG->currency = "$";
> > $CFG->currencyfirst = true; // show the currency symbol
> > before the price tag
> >
> > $DB_DEBUG = true;
> > $DB_DIE_ON_FAIL = true;
> >
> > require("$CFG->libdir/stdlib.php");
> > require("$CFG->libdir/dblib.php");
> > require("$CFG->libdir/mymarket.php");
> > require("$CFG->libdir/cart.php");
> >
> > $ME = qualified_me();
> >
> > ini_set("session.name", $CFG->sessionname);
> > session_start();
> > session_register("USER");
> > session_register("CART");
> >
> > if (! isset($_SESSION["USER"])) {
> > $_SESSION["USER"] = array();
> > }
> >
> > if (! isset($_SESSION["CART"])) {
> > $_SESSION["CART"] = new Cart;
> > }
> >
> > $USER = &$_SESSION["USER"];
> > $CART = &$_SESSION["CART"];
> >
> > db_connect($CFG->dbhost, $CFG->dbname, $CFG->dbuser, $CFG->dbpass);
> > ?>
> > ====
> >
> > The default password of MyMarket for 'root' (administrator account)
> > is 'password'. I have checked that my MySQL use 'md5()' as the
> > default encryption method.
> >
> > I can do login. But the problem is, I can not change the password of
> > root. The error message is:
> > "
> > Errors
> > Your old password is invalid
> > ".
> >
> > I've taken a look which script does the password replacement and I
> > found it is '/var/www/html/mymarket/users/change_password.php' in
> > that script I've found the function and edit it for investigating
> > where the problem resides:
> > "
> > <?
> > /* change_password.php (c) 2000 Ying Zhang (ying@zippydesign.com)
> > *
> > */
> > include("../application.php");
> > require_login();
> > if (match_referer() && isset($_POST)) {
> > $frm = $_POST;
> > $errormsg = validate_form($frm, $errors);
> >
> > if (empty($errormsg)) {
> > update_password($frm["newpassword"]);
> > $noticemsg = "Password change successful";
> > }
> > }
> >
> > $DOC_TITLE = "Change Password";
> > include("$CFG->templatedir/header.php");
> > include("$CFG->templatedir/form_header.php");
> > include("templates/change_password_form.php");
> > include("$CFG->templatedir/footer.php");
> >
> > function validate_form(&$frm, &$errors) {
> > $errors = new Object;
> > $msg = "";
> > if (empty($frm["oldpassword"])) {
> > $errors->oldpassword = true;
> > $msg .= "You did not specify your old password";
> > } elseif (! password_valid($frm["oldpassword"])) {
> > $errors->oldpassword = true;
> > $msg .= "Your old password is invalid";
> > } elseif (empty($frm["newpassword"])) {
> > $errors->newpassword = true;
> > $msg .= "You did not specify your new password";
> > } elseif (empty($frm["newpassword2"])) {
> > $errors->newpassword2 = true;
> > $msg .= "You did not confirm your new password";
> > } elseif ($frm["newpassword"] != $frm["newpassword2"]) {
> > $errors->newpassword = true;
> > $errors->newpassword2 = true;
> > $msg .= "Your new passwords do not match";
> > }
> > return $msg;
> > }
> >
> > function password_valid($password) {
> > global $USER;
> >
> > $username = $SUSER["user"]["username"];
> > $password = md5($password);
> > $qid = db_query("SELECT 1 FROM users WHERE username =
> > '$username' AND password = '$password'"); /* Here my investigator
> > */
> > echo db_num_rows($qid)."-->"."SELECT 1 FROM users WHERE
> > username = '$username' AND password = '$password'"; /* end of my
> > investigator */ return db_num_rows($qid); }
> >
> > function update_password($newpassword) {
> > global $USER;
> > $username = $USER["user"]["username"];
> > $newpassword = md5($newpassword);
> > $qid = db_query("UPDATE users SET password = '$newpassword'
> > WHERE username = '$username'"); }
> > ?>
> > ".
> >
> > And the result is:
> > "
> > 0-->SELECT 1 FROM users WHERE username = '' AND password =
> > '5f4dcc3b5aa765d61d8327deb882cf99' ".
> > So the user variable is empty, that's why.
> >
> > Now, my problem is I don't know my the PHP Script on my Apache2
> > of Mandriva 2009.1 does not store the session variable?
> >
> > Anybody has ever found the same problem as mine? Please share it to
> > me.
> >
> > Please tell me my mistake.
> >
> > Thank you very much in advance.
>
> Well that's a lot of code to look through and still not enough
> code :-)
>
> Just glancing through it in function update_password() I would expect:
>
> $username = $SUSER["user"]["username"];
>
> to actually be:
>
> $username = $USER["user"]["username"];
>
> Don't know where the S in $SUSER came from.