Keine Verbindung zum Server

Alles, was PHP betrifft, kann hier besprochen werden.

Keine Verbindung zum Server

Postby huckmao » 22. May 2006 16:55

Ich habe bisher mit alten Apache, MySQL, PhPMyAdmin-Versionen gearbeitet (manuell installiert). Statt alle einzeln zu updaten wagte ich den Versuch mit XAMPP. Die Installation scheint geglückt.
Leider bekomme ich keine Verbindung zum Server: "mysql_select_db(): supplied argument is not a valid MySQL-Link resource" .

Der Code im test-file ist:

$dbserver="localhost";
$dbname="test";
$dbuser="root"
$dbpass="";

$conn = @mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname,$conn);

Die Datenbankfiles *.frm *.MYD *.MYI etc. sind in:
..\xampp\mysql\data\[dbname]

Wo liegt das Problem? Kann mir jemand helfen?
huckmao
 
Posts: 9
Joined: 22. May 2006 16:39

Postby Wiedmann » 22. May 2006 17:21

Dein Connect funktiniert nicht. Fehlermeldungen die einem weiterhelfen würden, unterdrückst du dafür ja erfolgreich...
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby huckmao » 22. May 2006 17:26

Da hast du recht.

Die ganze Warnmeldung lautet:
mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10061) in ..\xampp\htdocs\[Pfad].php on line ...

Wo also ist die Krux?
huckmao
 
Posts: 9
Joined: 22. May 2006 16:39

Postby deepsurfer » 22. May 2006 17:46

Can't connect to MySQL server on 'localhost' (10061) i


Ist denn der MySQL Server von XAMPP überhaupt eingeschaltet ?

-Willkommenscreen aufrufen und die CD-Sammlung DEMO testen.
-http://localhost/phpmyadmin aufrufen.
- Über XAMPP-Controll schaun ob bei MySQL ein grüner Balken mit "running" vorhanden ist.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby huckmao » 22. May 2006 18:51

Die Installation von xampp scheint doch nicht geglückt zu sein. Ich kann MySQL-Server nicht starten.
Wenn ich den Dienst unter ->Verwaltung ->Dienste (WinXP HOme) starten will, meldet das OS "Fehler3: Das System kann den angegebenen Pfad nicht finden". Die 'Ampel' in der Taskleiste ist denn auch auf rot.
Wie weiter?
huckmao
 
Posts: 9
Joined: 22. May 2006 16:39

Postby deepsurfer » 24. May 2006 11:50

Wenn ich den Dienst unter ->Verwaltung ->Dienste (WinXP HOme) starten will, meldet das OS "Fehler3: Das System kann den angegebenen Pfad nicht finden".

Die Meldung besagt schon was schief läuft....

Die 'Ampel' in der Taskleiste ist denn auch auf rot.

Das ist das MySQLadmin Programm was beim XAMPP leider mitgegeben werden muss und bestandteil der WindowsVersion von MySQL.org ist.

Wie weiter?

DOSbox öffnen,
mysql_uninstallservice.bat ausführen und bei einer Fehlermeldung diese komplett hier posten.

Sollte keine Fehlermeldung erscheinen, dann das MySQL mal manuell mittels mysql_start.bat aufrufen lassen.
Eventuelle Fehlermeldung hier komplett posten.
chirio Deep
Wie sagte einst der MCP aus Tron auf dem Bildschirm zu schreiben Pflegte
" ... end of communication ... "
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby huckmao » 27. May 2006 19:35

Hallo,
komme erst jetzt wieder dazu, an der Sache zu arbeiten.

Also das mit dem Starten des MySQL-Servers funktioniert nun.

Aber jetzt habe ich ein anderes Problem: eine PHP-Anwendung (ein einfaches login), die unter der alten Konfiguration einwandfrei funktionierte, tut es jetzt nicht mehr. Ich habe auch den php-switch gemacht. Funktioniert trotzdem nicht.
Der Code der login.php ist folgender:
<?php
if (!isset($username) || !isset($password)){
?>
<form action="login.php" method="post" name="loginformular">
<table class="intern">
<tr>
<td class="intern" width="130">&nbsp;&nbsp;Benutzername:</td>
<td class="intern"><input type="text" name="username" id="username" size="25" maxlength="25"></td>
<script type="text/javascript">
<!--
document.loginformular.username.focus();
//-->
</script>
</tr>
<tr>
<td class="intern" width="130">&nbsp;&nbsp;Passwort:</td>
<td class="intern"><input type="password" name="password" id="password" size="25" maxlength="25"></td>
</tr>
<tr>
<td class="intern" width="130">&nbsp;</td>
<td class="intern"><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</form>

<?php
}
else {

//Variablen f&uuml;r Datenbankabfrage
include('include/config.inc.php');
//Benutzername und Passwort &uuml;berpr&uuml;fen, Session starten
include('include/verify.php');

}

?>


Kann mir da jemand weiterhelfen?
Gruss
huckmao
 
Posts: 9
Joined: 22. May 2006 16:39

Postby Tessi » 27. May 2006 20:45

Klingt stark danach, als solltest du dir das mal durchlesen.

MfG Tessi
Tessi
 
Posts: 16
Joined: 24. May 2006 12:52
Location: Berlin, Germany

Postby huckmao » 27. May 2006 21:40

Habe jetzt die register_globals auf on gesetzt in php.ini.
Funktioniert trotzdem nicht.
huckmao
 
Posts: 9
Joined: 22. May 2006 16:39

Postby Wiedmann » 27. May 2006 21:56

So am Rande:
Nimm dir das PHP-Manual zur Hand und korrigiere den Code, dann wird es funktionieren.

(Das Standardverhalten von PHP zu ändern, wie du es jetzt gemacht hast, war hoffentlich nicht der Sinn von Tessi's Rat...)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby huckmao » 27. May 2006 22:16

(Das Standardverhalten von PHP zu ändern, wie du es jetzt gemacht hast, war hoffentlich nicht der Sinn von Tessi's Rat...)

Nein, natürlich nicht. Ich wollte nur schauen, ob dieser Weg eine Lösung bieten könnte (hat's mittlerweile getan - ich wiederrufe mein obiges Statement - mit register_globals = on funktioniert es jetzt doch).

Ich werde jetzt wieder auf off zurücksetzen und den Code anpassen - und mich wieder melden, wenn's nicht klappen sollte (bin kein Routinier und brauche dafür Zeit).

Vorerst mal vielen Dank für die Hilfe.
Gruss
huckmao
 
Posts: 9
Joined: 22. May 2006 16:39

Postby huckmao » 28. May 2006 13:53

Sorry,
ich melde mich nochmals.

Ich habe jetzt
Code: Select all
if (!isset($username) || !isset($password))
zu
Code: Select all
if (!isset($_POST['username']) || !isset($_POST['password']))
abgeändert. Damit werden die Formulardaten auch bei register_globals = off eingelesen.
Aber wie kann ich die Benutzereingaben (die ja jetzt, wenn ich das richtig verstehe, in
Code: Select all
$_POST['username']
gespeichert sind) für alle weiteren scripts nutzen?

Ich habe es versucht mit:
Code: Select all
$username = $_POST['username'];

aber das funktioniert dann nur für diese bestimmte Seite. Bei weiteren Seiten funktioniert es bereits nicht mehr (auch bei Erneuerung von: $username = $_POST['username']; )
Dann habe ich versucht, eine Datei zu includen, wo ebenfalls
Code: Select all
$username = $_POST['username'];
definiert ist. Funktioniert auch nicht.

Ich versteh das Zeugs mit den Globals einfach nicht so richtig (bin Freizeit"Programmierer") und vermute, dass mein triviales Anliegen nicht genau in dieses Forum gehört. Aber wohin sonst?

Bin dankbar für Tipps.
Gruss
huckmao
 
Posts: 9
Joined: 22. May 2006 16:39

Postby Wiedmann » 28. May 2006 14:03

Ich versteh das Zeugs mit den Globals einfach nicht

Woher hast du dann das ohne Globals? Das gibts ja normal schon seit 4-5 Jahren nicht mehr...

Aber ist doch ganz einfach:
- Anstatt "$username" benutzt du überall im Script "$_POST['username']" (ist 'ne 'Variable', genauer ein Array, wie jedes Andere auch...

- oder du machst am Anfang vo Script ein "$username = $_POST['username'];" und benutzt im Rest vom Script "$username".

Funktioniert auch nicht.

Mein Auto fährt nicht. Sagst du mir warum nicht? (Ich denke durch deine hellseherischen Fähigkeiten dürfte das kein Problem sein ;-)

BTW:
Zum Entwickeln solltest du das error_level auf E_ALL stellen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby huckmao » 28. May 2006 14:56

Nun, ich habe in den letzten 4-5 Jahren auch nicht viel mehr als diese paar scripts geschreiben (ich sagte ja ich sei Freizeit"Programmierer").

Deine vorgeschlagene Lösung mit '$_POST["username"]' als Variable zu brauchen, hab ich probiert. Nicht geklappt. (z.B. bleibt das Ergebnis aus DB-Abfragen leer).

Auch die Variante mit '$username = $_POST['username'];' am Anfang eines jeden scripts hat nicht funktioniert. Das hatte ich im letzten Posting schon geschrieben.

Damit du nicht rätseln oder hellsehen musst :) , erläutere ich den Ablauf. (Ich hoffe, es ist keine Zumutung, soviel Code zu posten).
Ich habe login mit
Code: Select all
if (!isset($_POST['username']) || !isset($_POST['password']))

Erfolgreiche Benutzereingaben führen zu einem script, das die Eingaben mit der DB abgleicht
Code: Select all
if (($username == "") OR ($password == "")){
die ("<body><head><META HTTP-EQUIV='refresh' content='2;URL=login.php'></head><TABLE class='login'>
<TR>
   <TD class='login'>Ohne Name bzw. Passwort k&ouml;nnen Sie sich nicht einloggen !</TD>
</TR>
</TABLE></body>");
}
...
...
...
   else{
   $level=$zeileholen["level"];
   $user_id=$zeileholen["user_id"];
//Jetzt kann die Session registriert werden!
   session_register('username');
   session_register('level');
   session_register('user_id');

      switch($level)
      {
         case '0': include("weiter_0.php"); break;
         case '1': include("weiter_1.php"); break;
         case '2': include("weiter_2.php"); break;
         case '3': include("weiter_3.php"); break;
         case '4': include("weiter_4.php"); break;
         case '5': include("weiter_5.php"); break;
         
         default: echo "<body><head><META HTTP-EQUIV='refresh' content='3;URL=login.php'></head><TABLE class='login'>
         <TR>
            <TD class='login'>Offenbar sind die Angaben zu Ihrem Benutzerprofil nicht korrekt.<br> Nehmen Sie Kontakt mit dem Systemadministrator auf!</TD>
         </TR>

Am Ziel "weiter_1.php" angekommen. sieht es wie folgt aus:
Code: Select all
//falls jemand ohne login in den frame kommen sollte
if (!session_is_registered('username') OR $level != "1")
{
die ("
<body>
<link href='../Seiten/style_intern.css' rel='stylesheet' type='text/css'>
<script language='JavaScript1.2' type='text/javascript' src='../Seiten/scripts/scripts.js'></script>
<table class='intern'>
   <tr>
      <td class='intern'>Sie haben sich nicht richtig eingeloggt,<br> oder Ihr Browser akzeptiert Cookies nicht.<br><br><a href='login.php' target='_top'>zur&uuml;ck</a></td>
   </tr>
</table>
</body>
");
}
?>

Und hier hatte ich es versucht
1) mit includieren von logo.php
Code: Select all
<?
$password = $_POST['password'];
$username = $_POST['username'];
session_register('username');
?>

2) mit einfügen von (am Anfang des scripts)
Code: Select all
$username = $_POST['username'];

3) mit folgendem Code anstelle von obigem
Code: Select all
//falls jemand ohne login in den frame kommen sollte
if (!session_is_registered('$_POST["username"]') OR $level != "1")
{
die ("
<body>
<link href='../Seiten/style_intern.css' rel='stylesheet' type='text/css'>
<script language='JavaScript1.2' type='text/javascript' src='../Seiten/scripts/scripts.js'></script>
<table class='intern'>
   <tr>
      <td class='intern'>Sie haben sich nicht richtig eingeloggt,<br> oder Ihr Browser akzeptiert Cookies nicht.<br><br><a href='login.php' target='_top'>zur&uuml;ck</a></td>
   </tr>
</table>
</body>
");
}
?>

Keiner der Lösungsversuche führte zum Ziel.
Wo ist der Knopf?
huckmao
 
Posts: 9
Joined: 22. May 2006 16:39

Postby Wiedmann » 28. May 2006 19:20

also das mit dem 1), 2), 3) ist mir jetzt zuviel. Besser wäre hier ein Script zu posten so wie es ist (und nicht mit mehreren Abarten...)

Code: Select all
if (!isset($_POST['username']) || !isset($_POST['password']))

Erfolgreiche Benutzereingaben führen zu einem script, das die Eingaben mit der DB abgleicht
Code: Select all
if (($username == "") OR ($password == "")){

Führen wie zu einem Script? Include, Weiterleitung...? Oder woher bekommt das zweite Script sein $username / $passwort?

Code: Select all
session_register('username');
session_register('level');
session_register('user_id');
...
if (!session_is_registered('username') OR $level != "1")

session_register() / session_is_registered() ist evil. Dafür gibt es das $_SESSION - Array repektive isset(). (BTW ist es immer besser, die Sessionvariablen anders zu nennen als die POST/GET/GLOBAL - Vars)

Code: Select all
if (!session_is_registered('$_POST["username"]') OR $level != "1")

Das hier macht bestimmt nciht was du willst, egal ob mit global Vars oder dem POST-Array, da in Singlequotes Variablen nicht ersetzt werden.

Code: Select all
die ("<body><head><META HTTP-EQUIV='refresh' content='2;URL=login.php'></head><TABLE class='login'>

Ein Meta-Refresh ist evil. Dafür gibt es header().

BTW:
Denk an den error_level von E_ALL (und ein aufgeschlagenes PHP-Manual im 2. Browserfenster).
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 2 guests