anpera.net
https://anpera.homeip.net/phpbb3/

Datenbankdirektzugriff in 0.97
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=2110
Seite 1 von 2

Autor:  Kakerlake [ Do 12 Jan, 2006 20:59 ]
Betreff des Beitrags:  Datenbankdirektzugriff in 0.97

ch habe für 0.97 versucht ein script zu schreiben mit dem ich sql-befehle direkt ausführen kann ohne extra die db extern zu öffnen
wenn ich jetzt jedoch mein script anwende(und das selbst definierte superuserlvl 4 habe) werden die sql-befehle nicht ausgefüht
wenn jemand den fehler findet wäre ich echt dankbar:
[php]<?php
require_once "common.php";
page_header("Datenbankzugriff");
addnav ("Datenbankbefehl eingeben","dbwrite?op=write");
addnav("Zurück","superuser.php");
if ($session[user][superuser]>=4){
switch($_GET['op']){
case "";
addnav ("Datenbankbefehl eingeben","dbwrite?op=write");

case "write":
addnav("","dbwrite.php?op=drin&act=write2");
addnav("Doch nichts schreiben","dbwrite.php");
rawoutput("<table align='center'width='300'><tr><td>");
rawoutput("<form action='dbwrite.php?act=write2' method='POST'>");
rawoutput("<textarea name='text' cols='50' rows='15'>"
."</textarea>");
rawoutput("<input type='submit' class='button' value='Ausführen' />");
rawoutput("</form>");
rawoutput("</td></tr></table>");
break;

case "write2":
$sql = $_POST['text'];
db_query($sql) or die(sql_error($sql));
redirect("dbwrite.php");
addnav("Zurück","dbwrite.php");
break;
}
}
else{
redirect ("superuser.php");
}
page_footer();
?>[/php]

Autor:  Eliwood [ Do 12 Jan, 2006 21:19 ]
Betreff des Beitrags:  Re: Datenbankdirektzugriff in 0.97

[php]case "write2":
$sql = explode(";",$_POST['text']);
$i = 0;
while($i < count($sql))
{
db_query($sql[$i]) or die(db_error(LINK));
rawoutput($_POST['text']);
addnav("Zurück","dbwrite.php");
}
break;[/php]

mysql_query nimmt normalerweise nur den Ersten Befehl an... Aus verschiedenen Sicherheitsgründen.
So sollte man den Query präparieren könnten, dass er alle nimmt.
gehts so?

Autor:  Kakerlake [ Do 12 Jan, 2006 21:23 ]
Betreff des Beitrags: 

immer noch nicht

ich will das ganze verwenden um außerhalb von phpmyadmin neue tabellen und spalten erstellen zu können, momentan kann ich damit aber nur neue zeilen erzeugen

Autor:  Eliwood [ Do 12 Jan, 2006 21:25 ]
Betreff des Beitrags: 

Kakerlake hat geschrieben:
immer noch nicht

ich will das ganze verwenden um außerhalb von phpmyadmin neue tabellen und spalten erstellen zu können, momentan kann ich damit aber nur neue zeilen erzeugen


Argh...
[php]
$sql = explode(";",stripslashes($_POST['text']));[/php]

So?

Autor:  Kakerlake [ Do 12 Jan, 2006 21:31 ]
Betreff des Beitrags: 

jetzt werden mehrere zeilen eingabe unterstützt aber spalten und tabellen macht er immer noch nicht :(

was kann phpmyadmin was ich nicht kann :cry:

EDIT: jetzt werden garkeine befehle mehr ausgefürhrt???

Autor:  Eliwood [ Do 12 Jan, 2006 21:36 ]
Betreff des Beitrags: 

Nochmal was falsch von mir...

[php]case "write2":
$sql = explode(";",stripslashes($_POST['text']));
$i = 0;
while($i < count($sql))
{
db_query($sql[$i]) or die(db_error(LINK));
}
rawoutput($_POST['text']);
addnav("Zurück","dbwrite.php");
break; [/php]

Was wird ausgegeben?

Autor:  Kakerlake [ Do 12 Jan, 2006 21:40 ]
Betreff des Beitrags: 

irgendwie bleibe ich immer in act=write hängen so das write2 nie zum einsatz kommt

denn wenn ich versuche etwas einzugeben kommt in der url-bar nur das badnav obwohl ich in dem script eigentlich alles erlaubt hatte

EDIT: woher kommt das op=drinn???

das hat alles durcheinandergebracht :P

Autor:  Eliwood [ Do 12 Jan, 2006 21:52 ]
Betreff des Beitrags: 

Kakerlake hat geschrieben:
irgendwie bleibe ich immer in act=write hängen so das write2 nie zum einsatz kommt

denn wenn ich versuche etwas einzugeben kommt in der url-bar nur das badnav obwohl ich in dem script eigentlich alles erlaubt hatte

EDIT: woher kommt das op=drinn???

das hat alles durcheinandergebracht :P


Ich schätze mal, da het wer was aus dem Lesezimmer als Vorlage genommen? *gg*

egal... ^^

Gehts nun?

Autor:  Kakerlake [ Do 12 Jan, 2006 22:02 ]
Betreff des Beitrags: 

[php]<?php
require_once "common.php";
page_header("Datenbankzugriff");
addnav ("Datenbankbefehl eingeben","dbwrite.php?op=write");
addnav("Zurück","superuser.php");
addnav("","dbwrite.php?&op=write2");
if ($session[user][superuser]>=4){
switch($_GET['op']){
case "write":
addnav("","dbwrite.php?&op=write2");
addnav("Doch nichts schreiben","dbwrite.php");
rawoutput("<table align='center'width='300'><tr><td>");
rawoutput("<form opion='dbwrite.php?op=write2' method='POST'>");
rawoutput("<textarea name='text' cols='50' rows='15'>"
."</textarea>");
rawoutput("<input type='submit' class='button' value='Ausführen' />");
rawoutput("</form>");
rawoutput("</td></tr></table>");
break;

case "write2":
$sql = explode(";",stripslashes($_POST['text']));
$i = 0;
while($i < count($sql)){
db_query($sql[$i]) or die(db_error(LINK));
}
rawoutput($_POST['text']);
addnav("Zurück","dbwrite.php");
break;

case "";
break;
}
}
else{
redirect ("superuser.php");
}
page_footer();
?>[/php]

irgendwie kann ich write2 immernoch nicht aufrufen, ka wieso
muss ich das irgendwie als if realisieren?
hab das ebenfalls betreits versucht, dann kommt es jedoch zu einem fehler da ich ja die sicherheitsabfrage drinnen habe

Autor:  Kevz [ Do 12 Jan, 2006 23:22 ]
Betreff des Beitrags: 

Vorweg, lerne bitte Code- einrücken. Sowas ist echt schlimm, keine wirkliche übersicht. Aber schön hingeklatscht, Hauptsache es Funktioniert. Hab dir mal unten ne komplette Version angehängt die Funktionieren sollte, kanns aber nicht garantieren. Da ich es nicht getestet habe.

P.s:
Dies gilt auch für deine PHP- Kenntnisse siehe dazu PHP-Insel. Recht interessant dort evtl. gerade für dich passend.

Autor:  Kakerlake [ Fr 13 Jan, 2006 09:50 ]
Betreff des Beitrags: 

bleibe immer im ersten case hängen, beim versuch die befehle auszufürhren kommt nur badnav und das wars dann schon

Autor:  Meteora [ Fr 13 Jan, 2006 10:31 ]
Betreff des Beitrags: 

[php]
case "write":
addnav("","dbwrite.php?&op=write2");
addnav("Doch nichts schreiben","dbwrite.php");
rawoutput("<form action='dbwrite.php?op=write2' method='POST'>");
rawoutput("<table align='center'width='300'><tr><td>");
rawoutput("<textarea name='text' cols='50' rows='15'>"
."</textarea>");
rawoutput("<input type='submit' class='button' value='Ausführen' />");
rawoutput("</td></tr></table>");
rawoutput("</form>");
break;
[/php]

Autor:  Kevz [ Fr 13 Jan, 2006 12:32 ]
Betreff des Beitrags: 

Eieiei, mein fehler sry. Hab da einen kleinen fehler übersehen und zwar diesen hier &, der gehört garnit darein :roll:. Oben ist neue Version angehängt, einfach ersetzen bzw. einfügen.

Autor:  Kakerlake [ Fr 13 Jan, 2006 12:43 ]
Betreff des Beitrags: 

thx, fuktioniert jetzt, kann komplette tabellen erstellen ohne extra phpmyadmin aufrufen zu müssen oder ein script zu schreiben

falls jemand das script übernehmen möchte:
entweder die superuserabfrage auf stufe 3 runtersetzen oder im usereditor adminlvl 4 hinzufügen
[php] "superuser"=>"Superuser,enum,0,Standard Spieltage pro Kalendertag,1,Unbegrenzt Spieltage pro Kalendertag,2,Kreaturen und Spott administrieren,3,User administrieren",
ersetzen durch:
"superuser"=>"Superuser,enum,0,Standard Spieltage pro Kalendertag,1,Unbegrenzt Spieltage pro Kalendertag,2,Kreaturen und Spott administrieren,3,User administrieren,4,Programmierer",[/php]

Autor:  Tidus [ Fr 13 Jan, 2006 14:01 ]
Betreff des Beitrags: 

hm kann dann hier irgendwer die fertige fassung anhängen?

Autor:  Kakerlake [ Fr 13 Jan, 2006 14:25 ]
Betreff des Beitrags: 

Das File in superuser verlinken, möglichst mit folgendem Befehl:
[php]if ($session[user][superuser]>=3) addnav("Datenbankzugriff","dbwrite.php");[/php]

falsche Eingaben können Datenbankfehler verursachen, daher VORSICHT

EDIT: fürht schon wieder ins badnav :bash:

EDIT2: Dateianhang erneuert, war jedoch kein fehler drinnen

Autor:  Tidus [ Fr 13 Jan, 2006 14:47 ]
Betreff des Beitrags: 

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/www/web1/html/logdonline/dbwrite.php on line 8


lol

Autor:  Kevz [ Fr 13 Jan, 2006 15:29 ]
Betreff des Beitrags: 

So hier eine Funktionierende Version. Wenn du nächste mal etwas daran änderst mach es richtig! Lies dir mal php.net durch, dort kannst du ein wenig deine Grundkenntnisse aufbessern. Denn das was ich jedes mal im Script sehe, ist wirklich schlimm bei dir. Du machst immer leere Abfragen und das jedes mal...

Autor:  Kakerlake [ Fr 13 Jan, 2006 15:50 ]
Betreff des Beitrags: 

hast du die version getestet?

komme wie immer bis case 'write'
beim versuch case 'write2' durch das javascript aufzurufen kommt immer das badnav :???:

für welche php-version hast du das ganze jetzt eigentlich genau modifiziert?

Autor:  Kevz [ Fr 13 Jan, 2006 16:19 ]
Betreff des Beitrags: 

Sooo, oben hängt neue. Habs grad getestet sollte jetzt aufjedenfall Funktionieren. Welche PHP- Version ich benutze sowie Editor ist wurscht ;)

Seite 1 von 2 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/