Fehler im Code obwohl nichts verändert wurde

Sie widersprechen sich, richtig.

Aber trotzdem ist es so. Es muss dann wohl 2 Abfragen geben. Die Datenbank ist zu 100% mit Passwortabfrage.
Ist aber diese Zeile 64 aktiv sagt er mir dass er nicht konnektieren kann und dass angeblich keine Passwort
Abfrage existiert.

Aber das ist ja eine typische Eigenschaft von Fehlern, etwas passt nicht. ;) Und ich versuche der Sache auf die
Schliche zu kommen, was nicht passt, und warum es das tut. Ich weiß nur nicht wo ich anfangen soll.

ich habe versucht im Code nach:
PHP:
Access denied for user 'web601'@'localhost' (using password: NO)
...zu suchen doch das kommt wohl irgendwo vom System meines Hosters. Ich weiß grad nicht weiter, aber
Hauptsache der Fehler kommt nicht. Sonst noch Ideen wonach ich suchen sollte?

Grüße, Atilla
 
Durchsuch doich deinen Code mal nach dem Wort "mysql_connect"
Es werden warscheinlich mehrere einträge auftauchen, jedoch müsste bei allen in etwa folgendermaßen der code aussehen
PHP:
mysqlconnect($host,$user,$pw);

Wobei die Variablen natürlich warscheinlich anders heisen, oder eventuell sogar hardcoded deine Daten darin vorhanden sind.
sollte bei einer dieser abfrage die 3te variable fehlen ergänze sie, ansonsten suche die jeweiligen Variablen des Befehles und prüfe wo sie ihre Werte herbekommen und vorallem welche.

Liebe Grüße
NoUse4aNick
 
Mahlzeit und vielen Dank für den Tip. :)

Also ich habe nach den Sachen gesucht und habe 4 Einträge mit mysql_connect gefunden.
Überall sind alle 3 Variablen user, host und pw eingetragen.

Hinter jeder dieser Zeilen steht zum Beispiel:

PHP:
or die ("verbindung fehlgeschlagen");

Nirgendwo steht aber
PHP:
"Access denied"
- auch im kompletten Code nicht 1 einziges Mal.
Was mich auch stutzig macht ist, dass ja eigentlich nichts verändert wurde.

Aber ich habe eine lauwarme Spur :-)
Ich habe folgendes auf php.net gefunden:

" mysql_real_escape_string() ruft die Funktion mysql_real_escape_string der MySQL-Bibliothek auf, die folgende Zeichen mit einem Backslash ('\') versieht: \x00, \n, \r, \, ', " und \x1a.
Die Funktion muss immer (mit wenigen Ausnahmen) verwendet werden, um Daten abzusichern, bevor sie per Query an MySQL übermittelt werden. "

und etwas weiter unten:

"Die MySQL-Verbindung. Wird die Verbindungskennung nicht angegeben, wird die letzte durch mysql_connect() geöffnete Verbindung angenommen. Falls keine solche Verbindung gefunden wird, wird versucht, eine Verbindung aufzubauen, wie es beim Aufruf von mysql_connect() ohne Angabe von Argumenten der Fall wäre. Falls zufällig keine Verbindung gefunden oder aufgebaut werden kann, wird eine Warnung der Stufe E_WARNING erzeugt."

Ist der fette unterstrichene Bereich nicht vielleicht der Grund dafür dass er sich versucht, ohne Angaben vom Passort (bzw. Argumenten), zu verbinden. Einfach, weil er keine Verbindung findet.

Das ganze scheint ja schon wichtig zu sein, denn weiter unten heißt es:
"Hinweis: Wenn die Funktion nicht verwendet wird, um die Daten zu maskieren, ist der Query anfällig für SQL Injection Angriffe. "

Grüße und nochmal vielen Dank für eure Bemühungen,
Atilla
 
Hallo nochmal Sven Mintel,

deine Antwort habe ich anfangs übersehen und jetzt erst wahrgenommen.
Wie könnte ich den überprüfen ob, vor dem Zeitpunkt wo die Funktion aufgerufen wird
die Verbindung schon steht?

Danke für eure Geduld! :-(
 
Das du nirgends die Fehlermeldung "Acces Denied" findest, liegt daran das das ein Fehler ist der nicht vom Php Script selbst abgefangen und ausgegeben wird durch "or die", sondern ein unbehandelter fehler der eine standart fehler meldung gibt, da der Fehler nicht abggefangen wird.

Du könntest beispielsweise überprüfen ob es eine Funktion gibt die sich mit der sql datenbank verbindet, was meistens der Fall ist. Dazu suchst du am besten nochmal nach den mysql_connect befehlen, und überprüfst ob sie in einem function block stehen, das könnte in etwa so aussehen:

PHP:
function verbinden {
//code
$connection = mysql_connect($params);
return($connection);
}

Sollte dies der Fall sein, dann überprüfe noch bei deinen Codezeilen bei welchen der Fehler auftritt, ob vorher ein solcher funktionsaufruf vorhanden ist.

Liebe Grüße
NoUse4aNick
 
Hallo nochmal,

folgendes konnte ich ausfindig machen:
PHP:
function db_con(){
		global $CONFIG;
    	$db = mysql_connect($CONFIG['mysql']['host'],$CONFIG['mysql']['user'], $CONFIG['mysql']['pass']) or die ("verbindung fehlgeschlagen");
        	  mysql_select_db($CONFIG['mysql']['db'], $db) or die ("class_mysql_XXX.php: verbindung zur datenbank \"".$CONFIG['mysql']['db']."\" fehlgeschlagen");
    	return $db;             
  	}

In der Datei jedoch, wo die Zeile 64 ist, die in der Fehleranzeige kommt finde ich den Suchbegriff "db_con" nirgendwo.
Heisst das, dass der Aufruf nicht stattfindet?

Gruß aus Köln, Atilla

...und DANKE ;)
 
Wenn extra eine Funktion dafür definiert wurde, kann man auch davon ausgehen, dass sie immer zum verbinden verwendet wird.

Wenn in der Datei die funktion nicht aufgerufen wird, wird auf jedenfall nicht über den eigentlichen weg die Datenbank angesprochen. Was mich allerdings dann wundert ist das der Fehler den richtigen Usernamen ausgibt...
Das heist irgendwo muss ja die Datenbank angesprochen werden mit dem usernamen, dort fehlt lediglich nur das passwort.

Liebe Grüße
NoUse4aNick
 
Zurück