...

View Full Version : errors with connecting code



sonny
09-10-2011, 04:41 AM
Hi folks

Everything works on the result page, but saving to database, for some reason I get these errors on the result page, yet I know, all the database login info is correct.



Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'XXXXX@'localhost' (using password: YES) in /home/.../results.php on line 16
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/.../results.php on line 17
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/.../results.php on line 31


Below is my complete results page


// Complete results.php
require("common.php");
ReadConfig("speedtest.cfg");

## Save the results of this test to the database, if enabled
if($config->{'database'}->{'enable'}) {
$ip_matches = $config->{'database'}->{'ip_matches'};
if( (! $ip_matches) || ($ip_matches && preg_match("/$ip_matches/",$_SERVER['REMOTE_ADDR'])) ) {
Debug("Saving to database");
$dbh = mysql_connect(
$config->{'database'}->{'host'},
$config->{'database'}->{'user'},
$config->{'database'}->{'password'}
);
$dbs = mysql_select_db( $config->{'database'}->{'database'}, $dbh);
$table = $config->{'database'}->{'table'};
$ip = $_SERVER['REMOTE_ADDR'];
$upspeed = addslashes($_GET['upspeed']);
$downspeed = addslashes($_GET['downspeed']);
$sql = "
INSERT INTO `$table`
SET
`ip_string` = '$ip',
`ip` = INET_ATON('$ip'),
`timestamp` = NOW(),
`upspeed` = '$upspeed',
`downspeed` = '$downspeed'
";
mysql_query($sql,$dbh);
}
}





// this function located in common.php
function ReadConfig($config_file) {
global $config;
$lines = file($config_file);
foreach ($lines as $line_num => $line) {
$line = rtrim(preg_replace("/#.*/","",$line));
if(preg_match("/\[.*\]/", $line, $parts)) {
$section = $parts[0];
$section = preg_replace("/[\[\]]/","",$section);
} elseif (preg_match("/=/",$line)) {
list($var,$value) = split('=',$line);
$var = preg_replace('/ $/','',$var);
$value = preg_replace('/^ +/','',$value);
$config->{$section}->{$var} = $value;
}
}
}


and below is my settings from speedtest.cfg


## Set to 1 to enable
enable = 1
host = localhost
database = testdb
user = testuser
password = testpass
table = testtable

## Regular expression to match to save results to the database
ip_matches =

Fou-Lu
09-10-2011, 06:51 AM
Don't even need to go over the code; the error is very clear:


Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'XXXXX@'localhost (using password: YES) in /home/.../results.php on line 16

Now, you specify that the user is valid, BUT! Are you sure its valid for 'XXXXX'@localhost and not just 'XXXXX'@%? These are distinct user accounts depending on if the connection is local or remote.

sonny
09-10-2011, 07:15 AM
Don't even need to go over the code; the error is very clear:


Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'XXXXX@'localhost (using password: YES) in /home/.../results.php on line 16

Now, you specify that the user is valid, BUT! Are you sure its valid for 'XXXXX'@localhost and not just 'XXXXX'@%? These are distinct user accounts depending on if the connection is local or remote.

Hi Fou

That user error was just redacted, before posting
I just double checked again, login info is correct

I thought the problem was in the code somewhere

Sonny

Fou-Lu
09-10-2011, 07:20 AM
So, the problem is fixed then yes? The only error you have here is with a connection to the database (although I am relying on the error reporting to state the error).

sonny
09-10-2011, 07:43 AM
So, the problem is fixed then yes? The only error you have here is with a connection to the database (although I am relying on the error reporting to state the error).

No, I didn't get this yet, this is unreal, I have been working with complex functions all night, and the one thing that stumps me, is connecting to a simple database. I am going to close this notebook, make some coffee. and take another fresh look later.

Thanks
Sonny

Fou-Lu
09-10-2011, 08:02 AM
Then we go back to post #2.
The problem is the user you have specified does NOT have privileges on this database server. I mentioned as well that there is a difference between user@localhost and user@%. You must ensure that the user has been provided correctly for localhost and not just for %.
Also, make sure you dump your $config to verify that the data in it is correct. It doesn't look like it should be to me; these are using object dereferencing, but I don't see anywhere that these have been created as objects.

sonny
09-10-2011, 08:24 AM
This works with another test script using that same database
its the same login info



$db['host'] = 'localhost';
$db['user'] = 'testuser';
$db['pass'] = 'testpass';
$db['db'] = 'testdb';


Thanks
Sonny

Fou-Lu
09-10-2011, 08:32 AM
And the dump of $config is?

sonny
09-10-2011, 08:33 AM
And the dump of $config is?

How do I do that? I don't understand

Sonny

Fou-Lu
09-10-2011, 09:14 AM
var_dump($config);

sonny
09-14-2011, 09:13 AM
var_dump($config);

Fixed it, just forgot to post back, it was something I had going for security
reasons that was striping certain symbols from the password.

Thanks as always
Sonny



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum