Pagina 1 di 1

classe php......nn capisco l'errore [RISOLTO]

Inviato: sab 21 feb 2009, 17:02
da dottor3
ciao boyz.......
nn capisco dove sbaglio in questa classe php.......
....praticamente mysql rifiuta la connessione come se la pass fosse errata....nn lo e' tranquilli......vedete se potete darmi consigli :-k

il file di configurazione ha questo formato:

host=localhost
user=user
password=password

Codice: Seleziona tutto

<?php
# Questa classe si connette a database MSsql o MYsql
# attraverso un file di configurazione esterno definito in $_file che contiene solo HOST-USER-PWD
class db_gest{
	
	private $_file = "./key/conf_db.txt";
	private $_password;
	private $_user;
	private $_host;
	public function __construct(){
		$this->_recupera_dati();
	}
	
	private function _recupera_dati(){
		$dati = file($this->_file);
		#echo $dati[1];
		for($c=0; $c<count($dati); $c++){
			$campo = explode('=',$dati[$c]);
			#echo $campo[1];
			switch($campo[0]){
				case 'host':
					$this->_host = $campo[1];
		#			echo ".";
					break; 
				case 'user':
					$this->_user = $campo[1];
		#			echo ".";
					break;
				case 'password':
					$this->_password = $campo[1];
		#			echo $this->_password;
					break;
				default:
					break;
			}
		}
	}

	
	public function connect($tipo_db, $nome_DB){
		switch($tipo_db){
			case "mysql":
				$link_id = mysql_connect($this->_host, $this->_user, $this->_password);
				if(!$link_id) die("Impossibile completare la connesione a {$this->_host}");
				mysql_select_db($nome_DB);
				return $link_id;
				break;
			case "mssql":
				$link_id = mssql_connect($this->_host, $this->_user, $this->_password);
				if(!$link_id) die("Impossibile completare la connessione");
				mssql_select_db($nome_DB);
				return $link_id;
				break;
			default:
				print ("Inserire se il Db e' MsSQL o MySQL.");
				break;
		}
		 
	}
	
}
?>

Re: classe php......nn capisco l'errore

Inviato: sab 21 feb 2009, 17:12
da targzeta
Ma l'output dell'errore? Tanto per capire meglio.

Spina

Re: classe php......nn capisco l'errore

Inviato: sab 21 feb 2009, 17:22
da dottor3
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'cliente '@'localhost' (using password: YES) in /var/www/htdocs/gigetto/gigetto/mie_prod/class_db_gest.php on line 43
Impossibile completare la connesione a 127.0.0.1 --> debug script

Re: classe php......nn capisco l'errore

Inviato: sab 21 feb 2009, 17:28
da targzeta
Nel case con "mysql" hai provato a stampare le variabili che usi nell'invocazione della funzione? Sono corrette? Non è che c'è qualche spazio di troppo alla fine?

Spina

Re: classe php......nn capisco l'errore

Inviato: sab 21 feb 2009, 17:31
da targzeta
dottor3 ha scritto:...'cliente '...
Qui me sembra che ci potrebbe essere uno spazio di troppo.
Spina

Re: classe php......nn capisco l'errore

Inviato: sab 21 feb 2009, 17:36
da dottor3
L'avevo notato anche io...........sono andaro a controllare nel file di configurazione e nn c'e' nessuno spazio dopo l'user....possibile che sia aggiunto nella funzione db_gest::_recupera_dati() ????

Come potrei eventualmente toglierlo ??

Re: classe php......nn capisco l'errore

Inviato: sab 21 feb 2009, 17:39
da targzeta
dottor3 ha scritto:...Come potrei eventualmente toglierlo ??
Con la funzione trim()

Spina

Re: classe php......nn capisco l'errore

Inviato: sab 21 feb 2009, 17:48
da dottor3
Provo poi ti faccio sapere per ora grazie mille :thumbright:

Re: classe php......nn capisco l'errore

Inviato: sab 21 feb 2009, 18:00
da targzeta
Penso sia quello, infatti la funzione file(), che usi in _recupera_dati():
Returns the file in an array. Each element of the array corresponds to a line in the file, with the newline still attached. Upon failure, file() returns FALSE.
Spina

Re: classe php......nn capisco l'errore

Inviato: dom 22 feb 2009, 15:14
da dottor3
Grazie Spina!!!
Funziona perfettamente........alle volte una piccolezza ti fa scervellare!!!!

Grazie ancora

Re: classe php......nn capisco l'errore [RISOLTO]

Inviato: mer 11 mar 2009, 9:02
da targzeta
Scusa se aggiorno questo post già risolto. Per questi casi generalmente si usa fare in un altro modo, dove il file di configurazione è fatto più o meno così:

Codice: Seleziona tutto

<?php 
  define('C_HOST', 'localhost');
  define('C_USER', 'user');
  define('C_PASSWORD', 'password');
?>
mentre il file in cui ti connetti al database:

Codice: Seleziona tutto

<?php
  require('file_configurazione.php');
  ...
  $res = mysql_connect(constant('C_HOST'), constant('C_USER'), constant('C_PASSWORD'));
  ...
?>
Spina

Re: classe php......nn capisco l'errore [RISOLTO]

Inviato: mer 11 mar 2009, 21:02
da aschenaz
spina ha scritto:...

Codice: Seleziona tutto

<?php
  require('file_configurazione.php');
  ...
  $res = mysql_connect(constant('C_HOST'), constant('C_USER'), constant('C_PASSWORD'));
  ...
?>
Spina
Che differenza c'è da richiamare direttamente la costante (ad esempio:
mysql_connect(C_HOST,C_USER,C_PASSWORD)) ?

Re: classe php......nn capisco l'errore [RISOLTO]

Inviato: mer 11 mar 2009, 21:10
da targzeta
aschenaz ha scritto:...
Che differenza c'è da richiamare direttamente la costante (ad esempio:
mysql_connect(C_HOST,C_USER,C_PASSWORD)) ?
Dalla pagina di man:
constant() is useful if you need to retrieve the value of a constant, but do not know its name. I.e. it is stored in a variable or returned by a function.
quindi in questo caso forse era anche meglio non usare constant().

Spina