MyBB.de Forum

Normale Version: MSSQL
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo, ich hab folgendes problem.

Ich habe ein Script das MSSQL benutzt, udn wollte es auf einer externen seite haben, habe das Add-on Pagemanager probiert, es kam ein error. Ich hab es manuel probiert, wenn ich HTML und php aufspalte kriege ich zwar kein error, aber das script funktioniert nicht o:

Hat jemand vll eine Idee wie das funktionieren kann ?
Bitte achte auf deine Rechtschreibung und beschreibe das Problem ausführlicher.
MyBB nutzt MySQL und kann mit MSSQL nichts anfangen.
Die MSSQL daten werden in dem Script eingetragen.
Der Error mit dem Plugin pagemanager lautet:

Code:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\AppServ\www\inc\plugins\pagemanager.php(794) : eval()'d code on line 9

Wenn ich allerdings einstelle, das es ohne das Foren-Design angezeigt werden soll, funktioniert es.
Ohne den dazugehörigen Code, kann man zu der Meldung leider nichts sagen...
Hier ist das SCript, MSSQL daten zensiert.
Code:
<?php

$ip = $_SERVER['REMOTE_ADDR'];
$time = date("l dS of F Y h:i:s A");
$script = $_SERVER[PATH_TRANSLATED];
$fp = fopen ("GuildRejoin.txt", "a+");
$sql_inject_1 = array(";","'","%",'"'); #Whoth need replace
$sql_inject_2 = array("", "","","&quot;"); #To wont replace
$GET_KEY = array_keys($_GET); #array keys from $_GET
$POST_KEY = array_keys($_POST); #array keys from $_POST
$COOKIE_KEY = array_keys($_COOKIE); #array keys from $_COOKIE
/*begin clear $_GET */
for($i=0;$i<count($GET_KEY);$i++)
{
$real_get[$i] = $_GET[$GET_KEY[$i]];
$_GET[$GET_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_GET[$GET_KEY[$i]]));
if($real_get[$i] != $_GET[$GET_KEY[$i]])
{
fwrite ($fp, "IP: $ip\r\n");
fwrite ($fp, "Method: GET\r\n");
fwrite ($fp, "Value: $real_get[$i]\r\n");
fwrite ($fp, "Script: $script\r\n");
fwrite ($fp, "Time: $time\r\n");
fwrite ($fp, "==================================\r\n");
}
}
/*end clear $_GET */
/*begin clear $_POST */
for($i=0;$i<count($POST_KEY);$i++)
{
$real_post[$i] = $_POST[$POST_KEY[$i]];
$_POST[$POST_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_POST[$POST_KEY[$i]]));
if($real_post[$i] != $_POST[$POST_KEY[$i]])
{
fwrite ($fp, "IP: $ip\r\n");
fwrite ($fp, "Method: POST\r\n");
fwrite ($fp, "Value: $real_post[$i]\r\n");
fwrite ($fp, "Script: $script\r\n");
fwrite ($fp, "Time: $time\r\n");
fwrite ($fp, "==================================\r\n");
}
}
/*end clear $_POST */
/*begin clear $_COOKIE */
for($i=0;$i<count($COOKIE_KEY);$i++)
{
$real_cookie[$i] = $_COOKIE[$COOKIE_KEY[$i]];
$_COOKIE[$COOKIE_KEY[$i]] = str_replace($sql_inject_1, $sql_inject_2, HtmlSpecialChars($_COOKIE[$COOKIE_KEY[$i]]));
if($real_cookie[$i] != $_COOKIE[$COOKIE_KEY[$i]])
{
fwrite ($fp, "IP: $ip\r\n");
fwrite ($fp, "Method: COOKIE\r\n");
fwrite ($fp, "Value: $real_cookie[$i]\r\n");
fwrite ($fp, "Script: $script\r\n");
fwrite ($fp, "Time: $time\r\n");
fwrite ($fp, "==================================\r\n");
}
}

/*end clear $_COOKIE */
fclose ($fp);
?>

<?php
if(isset($_POST['submit5'])){
$char = $_POST['charname'];
$link = @mssql_connect("MSSQL", "sa", "PW") or die ("Down ?");
$db = @mssql_select_db('CHARACTER_01_DBF') or die ("Down?");
$query = mssql_query("SELECT m_szName FROM CHARACTER_TBL WHERE m_szName = '$char'");
$result = mssql_fetch_row($query);

if($char =='') {$error1 = '<font color="red">Please type in all the description fields.</font>';}
else if ($result[0] != $char) {$error1 = '<font color="red">There is no character called "'.$char.'".</font>';}
else { mssql_query("UPDATE CHARACTER_TBL SET m_tGuildMember = '20110101000000' WHERE m_szName = '$char'");
$error1 = '<font color="green">Your Rejoin Time has been successfully reset</font>';}
mssql_close();}
echo ''.$error1;
?>
<form action="misc.php?page=rejoin" method="post"><br/>
<label style="">Charaktername:</label> <input type="text" name="charname" />
<br>
<input style="" type="submit" name="submit5" value="Reset Character"/></center>
# ist in C(++) vielleicht eine Auskommentierung. In PHP ist das aber // aber auch /* und */ geht.
(09.11.2011, 19:26)Falkenauge Mihawk schrieb: [ -> ]# ist in C(++) vielleicht eine Auskommentierung. In PHP ist das aber // aber auch /* und */ geht.
Unsinn, das ist vollkommen korrekt: http://www.php.net/manual/de/language.ba...mments.php
In C++ ist es genauso mit dem Auskommentieren wie in PHP.

Auch wenn ich die Kommentierung ändere, funktioniert es nicht o:
Ich frage mich ja besonders, wieso es funktioniert wernn ich die MYBB-Template funktion im Pagemanager deaktivere, und nicht wenn ich diese funktion aktiv habe oo
Meiner Meinung nach ist der Code sowieso Quark. Anstatt array_keys() und for() könntest du das ganze mit foreach() vereinfachen.

edit: Etwas produktives:
PHP-Code:
<?php

$ip 
$_SERVER['REMOTE_ADDR'];
$time date("l dS of F Y h:i:s A");
$script $_SERVER['PATH_TRANSLATED'];
$sql_inj = array(";" => """'" => """%" => """\"" => "&quot;"); //Need to be replaced

/*begin clear $_GET */
foreach($_GET as $key => $val) {
    foreach(
$sql_inj as $skey => $sval) {
        
$key str_replace($skey$sval$key);
    }

    
//if($real_get[$i] != $_GET[$GET_KEY[$i]]) - wäre eigentlich hier, macht aber keinen Sinn, da du immer den selben Inhalt in beiden Variablen haben wirst. So würde es praktisch aussehen: if($key != $key)
    
file_put_contents("IP: ".$ip."\r\nMethod: GET\r\nValue: ".$key."\r\nScript: ".$script."\r\nTime: ".$time."\r\n==================================\r\n""GuildRejoin.txt"FILE_APPEND);
}
/*end clear $_GET */

/*begin clear $_POST */
foreach($_POST as $key => $val) {
    foreach(
$sql_inj as $skey => $sval) {
        
$key str_replace($skey$sval$key);
    }

    
//if($real_post[$i] != $_POST[$POST_KEY[$i]]) - das selbe hier
    
file_put_contents("IP: ".$ip."\r\nMethod: POST\r\nValue: ".$key."\r\nScript: ".$script."\r\nTime: ".$time."\r\n==================================\r\n""GuildRejoin.txt"FILE_APPEND);
}
/*end clear $_POST */

/*begin clear $_COOKIE */
foreach($_COOKIE as $key => $val) {
    foreach(
$sql_inj as $skey => $sval) {
        
$key str_replace($skey$sval$key);
    }

    
//if($real_cookie[$i] != $_COOKIE[$COOKIE_KEY[$i]]) - das selbe hier
    
file_put_contents("IP: ".$ip."\r\nMethod: COOKIE\r\nValue: ".$key."\r\nScript: ".$script."\r\nTime: ".$time."\r\n==================================\r\n""GuildRejoin.txt"FILE_APPEND);
}
/*end clear $_COOKIE */

//Der Rest ist ganz okay.

if(isset($_POST['submit5'])){
$char $_POST['charname'];
$link = @mssql_connect("MSSQL""sa""PW") or die ("Down ?");
$db = @mssql_select_db('CHARACTER_01_DBF') or die ("Down?");
$query mssql_query("SELECT m_szName FROM CHARACTER_TBL WHERE m_szName = '$char'");
$result mssql_fetch_row($query);

if(
$char =='') {$error1 '<font color="red">Please type in all the description fields.</font>';}
else if (
$result[0] != $char) {$error1 '<font color="red">There is no character called "'.$char.'".</font>';}
else { 
mssql_query("UPDATE CHARACTER_TBL SET m_tGuildMember = '20110101000000' WHERE m_szName = '$char'");
$error1 '<font color="green">Your Rejoin Time has been successfully reset</font>';}
mssql_close();}
echo 
''.$error1;
?>
<form action="misc.php?page=rejoin" method="post"><br/>
<label style="">Charaktername:</label> <input type="text" name="charname" />
<br>
<input style="" type="submit" name="submit5" value="Reset Character"/></center>