Roman: msconnect(); bei MSSQL 2005

Guten Tag!

Ich habe ein bzw. mehrere PHP-Scripte mit msconnect (); um auf eine MSSQL datenbank zu connecten.

Bei MSSQL 2000 ging auch noch alles gut. Da mein Root aber MSSQL 2000 nicht unterstützt musste ich notgedrungen 2005 installieren.

Nun stellt sich das Problem, dass ich nicht auf meine Datenbank connecten kann. Alle ODBC-Quellen und sonstiges ist richtig eingerichtet! PHP läuft und extension=php_mssql.dll ist auch in der php.ini .

Hier mal mein script:

<HTML>
<HEAD>
<TITLE>Server Register</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">

<style type="text/css">
<!--
body,td,th {
 color: #000000;
}
body {
 background-color: #FFFFFF;
}
-->
</style><p>Registrier hier deinen Account:</p>

<?php
function passConvert($password)
{
    $encar = array('!'=>'95', '"'=>'88', '#'=>'9D', '$'=>'4C', '%'=>'F2', '&'=>'3E', '''=>'BB', '('=>'C0', ')'=>'7F', '*'=>'18', '+'=>'70', ','=>'A6', '-'=>'E2', '.'=>'EC', '/'=>'77',
                        '0'=>'2C', '1'=>'3A', '2'=>'4A', '3'=>'91', '4'=>'5D', '5'=>'7A', '6'=>'29', '7'=>'BC', '8'=>'6E', '9'=>'D4', ':'=>'40', ';'=>'17', '<'=>'2E', '='=>'CB', '>'=>'72', '?'=>'9C',
                        '@'=>'A1', 'A'=>'FF', 'B'=>'F3', 'C'=>'F8', 'D'=>'9B', 'E'=>'50', 'F'=>'51', 'G'=>'6D', 'H'=>'E9', 'I'=>'9A', 'J'=>'B8', 'K'=>'84', 'L'=>'A8', 'M'=>'14', 'N'=>'38', 'O'=>'CE',
                        'P'=>'92', 'Q'=>'5C', 'R'=>'F5', 'S'=>'EE', 'T'=>'B3', 'U'=>'89', 'V'=>'7B', 'W'=>'A2', 'X'=>'AD', 'Y'=>'71', 'Z'=>'E3', '['=>'D5', '\'=>'BF', ']'=>'53', '^'=>'28', '_'=>'44',
                        '`'=>'33', 'a'=>'48', 'b'=>'DB', 'c'=>'FC', 'd'=>'09', 'e'=>'1F', 'f'=>'94', 'g'=>'12', 'h'=>'73', 'i'=>'37', 'j'=>'82', 'k'=>'81', 'l'=>'39', 'm'=>'C2', 'n'=>'8D', 'o'=>'7D',
                        'p'=>'08', 'q'=>'4F', 'r'=>'B0', 's'=>'FE', 't'=>'79', 'u'=>'0B', 'v'=>'D6', 'w'=>'23', 'x'=>'7C', 'y'=>'4B', 'z'=>'8E', '{'=>'06', '|'=>'5A', '}'=>'CC', '~'=>'62');

$newpass = "0x";
    for ($i = 0; $i < strlen($password); $i++)
    {
        $newpass .= $encar[$password[$i]];
    }

return $newpass;
}

if ($_POST["gogogo"])
{
    $err = "";

if (!$_POST["accname"]) $err .= "<font color='red'><b>Enter an ID <br>\n";
    if (!$_POST["accpass1"]) $err .= "<font color='red'><b>Enter an Password <br>\n";
    if (!$_POST["accpass2"]) $err .= "<font color='red'><b>Repeat Password <br>\n";

if ($err == "")
    {
        if ($_POST["accpass1"] != $_POST["accpass2"])
            $err .= "<font color='red'><b>Passwords does not match! <br>\n";
    }

if ($err == "")
    {

$msconnect = mssql_connect("localhost", "sa", "passwd");
         $msdb = mssql_select_db("kal_auth", $msconnect);

$cpass = passConvert($_POST["accpass1"]);
         $query = "INSERT INTO Login ([ID], [PWD], [Birth], [Type], [ExpTime]) VALUES('".$_POST["accname"]."', $cpass , '19190101', '0', '4000')";
        //echo $query;

$acccreate = mssql_query($query);

if ($acccreate)
        {
            $uid = mssql_result(mssql_query("SELECT [UID] from Login WHERE [ID]='".$_POST["accname"]."'"),0,0);

mssql_close() or die('failed closing mssql');

$err = "<b>Account erfolgreich erstellt.</b>";

}
        else echo "Hmm, da muss was schief gelaufen sein!!! Wir kümmern uns um den Fehler.";
        mssql_close() or die('failed closing mssql');

}

}

?>

<title></title>
<body>

<form method="post" action="acc_reg.php">
  <table>
    <tr>
      <td></td><td><?= $err ?></td>
    </tr>
    <tr>
      <td>ID:</td><td><input type="text" name="accname" value="<?= $_POST["accname"] ?>" maxlength="12"></td>
    </tr>
    <tr>
      <td>Password:</td><td><input type="password" name="accpass1" maxlength="8"></td>
    </tr>
    <tr>
      <td>Repeat Password:</td><td><input type="password" name="accpass2" maxlength="8"></td>
    </tr>

<tr><td>&nbsp;</td></tr>

<tr>
      <td><input type="submit" name="gogogo" value="Erstellen"></td>
    </tr>
  </table>

</form>
</body>
</html><!-- tab end -->
<body>
</body>
</html>

Wie gesagt, mit MSSQL 2000 lief noch alles wunderbar ... aber nun...

passt der code für MSSQL 2005 vielleicht nicht?
was muss ich ändern???

LG´s aus der Region Hannover

Roman

--
<!-- Dies ist eine Signatur :-) -->
  1. echo $begrüßung;

    Nun stellt sich das Problem, dass ich nicht auf meine Datenbank connecten kann.

    Das ist als Fehlerbescheibung nicht ausreichend. Woraus genau schlussfolgerst du, dass du dich nicht verbinden kannst? Gab es Fehlermeldungen?

    Alle ODBC-Quellen und sonstiges ist richtig eingerichtet! PHP läuft und extension=php_mssql.dll ist auch in der php.ini .

    Vertrauen ist gut, Kontrolle ist besser. Schau nicht nach, was du eingestellt hast, sondern das was bei PHP angekommen ist: phpinfo()

    <HTML>

    Wenn du ein Problem mit der Datenbankverbindung hast, ist der Rest des Scriptes ziemlich uninteressant. Erstelle ein Minimalscript, bei dem der Fehler immer noch auftritt. Connect-Befehl mit richtigen Verbindungsdaten sollte reichen. Schau dann nach, was die Funktion für einen Rückgabewert hat (var_dump() ist dafür am geeignetsten). Viele PHP-Funktionen, besonders die für Datenbank-Verbindungen, geben ihren Misserfolgsstatus über einen anderen Rückgabewert bekannt als im Gutfall. Ignoriere diesen nicht.

    $msconnect = mssql_connect("localhost", "sa", "passwd");
             $msdb = mssql_select_db("kal_auth", $msconnect);

    Somit gibst du ihn unangeschaut an die nachfolgende Funktionen weiter. Das ist nur im Gut-Fall richtig, denn das False des Fehlerfalls ist ein ungültiger Wert für die von mssql_select_db() erwartete Verbindungskennung. Um den genauen Wortlaut der Fehlermeldung zu erhalten gibt es normalerweise eine extra Funktion, für mssql habe ich jedoch im Handbuch keine gefunden. Apropos Handbuch, unter den Userkommentaren zu mssql_connect() befinden sich zahlreiche, die sich mit Verbindungsproblemem beschäftigen.

    echo "$verabschiedung $name";

    1. mein größtes problem ist dass überhaupt keine verbindung hergestellt werden kann... über php .. denn der gameserver der auf mssql basiert funktioniert ja ohne probleme

      Warning: mssql_connect() [function.mssql-connect]: message: Login failed for user 'sa'. (severity 14) in C:\Program Files\Abyss Web Server\htdocs\acc_reg.php on line 54

      folgendes ist würde ich sagen ein resultat aus dem vorherigen:

      Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: localhost in C:\Program Files\Abyss Web Server\htdocs\acc_reg.php on line 54

      Warning: mssql_select_db(): supplied argument is not a valid MS SQL-Link resource in C:\Program Files\Abyss Web Server\htdocs\acc_reg.php on line 56

      Warning: mssql_query() [function.mssql-query]: message: Invalid object name 'Login'. (severity 16) in C:\Program Files\Abyss Web Server\htdocs\acc_reg.php on line 62

      Warning: mssql_query() [function.mssql-query]: Query failed in C:\Program Files\Abyss Web Server\htdocs\acc_reg.php on line 62

      phpinfo() ist alles in ordnung

      und ich habe php auch richtig mit dem web-server verknüpft:

      Abyss - Web-Server -> FAQ -> schritt für schritt befolgt

      Wie schon gesagt es kann nicht am script liegen (eigentlich)

      es muss was mit mssql 2005 zu tun haben ... weil mit 2000 läuft alles wunderbar .. auch über den abyss^^

      1. Hello,

        Warning: mssql_connect() [function.mssql-connect]: message: Login failed for user 'sa'. (severity 14) in C:\Program Files\Abyss Web Server\htdocs\acc_reg.php on line 54

        und was ist mit dem User "sa"? Hast du das richtige Passwort verwendet? Oder noch besser: Leg einen anderen Nutzer an, braucht das PHP-Skript wirklich den Admin-Zugang?

        MfG
        Rouven

        --
        -------------------
        Wenn du die Nadel im Heuhaufen nicht findest, zünde den Heuhaufen an.
        1. Guten Tag!

          und was ist mit dem User "sa"? Hast du das richtige Passwort verwendet?

          ja normal oder? .. nur ihc will das hier halt nicht posten ... von mssql habe ich ja auch ehnung ... ich kann dir z.b. sagen dass man keinen zweiten acc erstellen kann ... es liegt ja auch nicht am script selbst ... es muss im zusammenhang mit MSSQL 2005 stehen .. weil bei 2000 funktioniert es ... gibt es vielleicht ne andere syntax um auf 2005 zugreigfen zu können???

          oder liegt es daran dass ich den falschen server angegeben habe?? .. es muss aber der richtige sein ... der MMORPG server kann ja auch connecten ... und mehrere verbindungen sind eindeutig möglich^^

          LG´s aus der Region Hannover

          Roman

          --
          <!-- Dies ist die Signatur :-) -->