php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 01-10-2008, 11:49
mainclain
 Registrierter Benutzer
Links : Onlinestatus : mainclain ist offline
Registriert seit: Dec 2006
Beiträge: 58
mainclain ist zur Zeit noch ein unbeschriebenes Blatt
mainclain eine Nachricht über ICQ schicken
Standard Mathe Formel ausrechnen lassen

Hallo, bin seit langer zeit mal wieder dabei ein wenig in php für mein forum zu programmieren.
Hier hab ich nun ein Problem: Im Adminmenü stell ich eine Formel ein - ganz simpel, wie z.b:

5*x

Im Forum les ich diese Formel dann aus der Datenbank aus, und ersetzte das x, mit einer bestimmten zahl, beispiel 6.
Doch anstatt 30 auszugeben, gibt er 5*6 aus - wird wohl als string gerwertet. Wie bekomm ich das hin, das dies ausgerechnet wird?

Hoffe mir kann hier mal wieder geholfen werden
Mit Zitat antworten
  #2 (permalink)  
Alt 01-10-2008, 11:59
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

2 Wege führen zum Ziel:

- einfacher Weg ist eval() aber auch gefährlicher
- jedes Operationszeichen inkl. Klammerungen heraus finden und entsprechend z.B. in switch ... case ... (eventuell mit Rekursivfunktion wegen Klammerung) die Operation mit den dazugehörigen Operanden ausführen. Dieser Weg ist aufwändig aber dafür absolut sicher.
Mit Zitat antworten
  #3 (permalink)  
Alt 01-10-2008, 12:01
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Entweder bastelst du dir einen Formelparser und Auswerter. Oder schaufelst das durch eval().

Tipp:
NIEMALS UserDaten durch eval() schicken.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #4 (permalink)  
Alt 01-10-2008, 12:24
mainclain
 Registrierter Benutzer
Links : Onlinestatus : mainclain ist offline
Registriert seit: Dec 2006
Beiträge: 58
mainclain ist zur Zeit noch ein unbeschriebenes Blatt
mainclain eine Nachricht über ICQ schicken
Standard

1. Was ist an eval so gefährlich?
2. Hab das noch nie benutzt, kapiers nicht wirklich *peinlich*
Hab mir für die ersten tests einfach ne kleine php datei gemacht:

<?php
$dieformel = "x*1"; //Diese Formel wird aus der Datenbank geholt
$userpunkteinsgesamt="5"; // Wieviele Punkte der User hat
$anzahlzeichen = str_replace("x", $userpunkteinsgesamt, $dieformel); //Hier soll das X der Formel mit der Anzahl der Punkte ersetzt werden.

eval ("\$ergebnis = \$anzahlzeichen");
echo $ergebnis;

?>
So gibt es das gleiche aus wie sonst, 5*1. Gebe ich nun den str_replace teil im eval ein, kommt 0 heraus. Mach ich da irgentwas falsch, oder hab ich einfach das grundprizip der funktion noch net verstanden :P? (wobei ich eher auf das letztere tippe :P)
Mit Zitat antworten
  #5 (permalink)  
Alt 01-10-2008, 12:30
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

PHP-Code:
<?php
$dieformel 
"x*1"//Diese Formel wird aus der Datenbank geholt
$userpunkteinsgesamt="5"// Wieviele Punkte der User hat
 //Hier soll das X der Formel mit der Anzahl der Punkte ersetzt werden.
$anzahlzeichen str_replace("x",$userpunkteinsgesamt$dieformel);

// so
eval ("\$ergebnis = $anzahlzeichen;");

// oder so
$ergebnis = eval ("return $anzahlzeichen;");

echo 
$ergebnis;

?>
*ungetestet*
__________________
Wir werden alle sterben

Geändert von combie (01-10-2008 um 12:38 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 01-10-2008, 12:30
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Fragen über Fragen ...
Mit Zitat antworten
  #7 (permalink)  
Alt 01-10-2008, 12:36
mainclain
 Registrierter Benutzer
Links : Onlinestatus : mainclain ist offline
Registriert seit: Dec 2006
Beiträge: 58
mainclain ist zur Zeit noch ein unbeschriebenes Blatt
mainclain eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von asp2php
Fragen über Fragen ...
... und ich weiß noch immer nicht was daran so gefährlich ist^^.
Und das hab ich mir schon angeguckt, aber net so ganz durchgecheckt xD

@ combie: Danke klappt :P
Mit Zitat antworten
  #8 (permalink)  
Alt 01-10-2008, 12:40
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
... und ich weiß noch immer nicht was daran so gefährlich ist^^
Was ist wenn der User dort Code einschleusen kann...???

z.B. "Lösch mich alle Dateien von LW c:"
__________________
Wir werden alle sterben
Mit Zitat antworten
  #9 (permalink)  
Alt 01-10-2008, 12:48
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von mainclain
... und ich weiß noch immer nicht was daran so gefährlich ist^^.
z.B.

unter linux: eval("exec('rm -r ./');");
unter windows: eval("exec('del *.* /y');");

Achtung: nicht ausführen lassen!
Mit Zitat antworten
  #10 (permalink)  
Alt 01-10-2008, 12:56
mainclain
 Registrierter Benutzer
Links : Onlinestatus : mainclain ist offline
Registriert seit: Dec 2006
Beiträge: 58
mainclain ist zur Zeit noch ein unbeschriebenes Blatt
mainclain eine Nachricht über ICQ schicken
Standard

Wie weit kann man damit denn gehn? xD denke nur das verzeichnis, auf das man auch rechte hat oder?

Geändert von mainclain (01-10-2008 um 12:58 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 01-10-2008, 12:57
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von asp2php
unter linux: eval("exec('rm -r ./');");
Wobei das aller Wahrscheinlichkeit nach gar keine Auswirkungen hätte.

Viel interessanter ist das Ausspähen von Datenbanken, das installieren eines Proxys, etc.

@mainclain: Dann hast du ein scheiß Templatesystem!
Mit Zitat antworten
  #12 (permalink)  
Alt 01-10-2008, 12:59
mainclain
 Registrierter Benutzer
Links : Onlinestatus : mainclain ist offline
Registriert seit: Dec 2006
Beiträge: 58
mainclain ist zur Zeit noch ein unbeschriebenes Blatt
mainclain eine Nachricht über ICQ schicken
Standard

inwiefern können user denn darauf zugreifen? Ist immerhin auch im ganzen templatesystem eingebaut...? (ist wbblite, da ist das überall mit:
eval ("\$navbar .= \"".$tpl->get("navbar_board")."\";");
Um auf template datein zuzugreifen)
Mit Zitat antworten
  #13 (permalink)  
Alt 01-10-2008, 13:14
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
da ist das überall mit:
Ja, du bist nicht der Erste, welcher auf so schusselige Ideen kommt

Es ist übrigens völlig wurscht, ob include oder eval. Es kommt einzig darauf an, dass kein UserCode zur Ausführung kommt.
__________________
Wir werden alle sterben

Geändert von combie (01-10-2008 um 13:17 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 01-10-2008, 13:20
mainclain
 Registrierter Benutzer
Links : Onlinestatus : mainclain ist offline
Registriert seit: Dec 2006
Beiträge: 58
mainclain ist zur Zeit noch ein unbeschriebenes Blatt
mainclain eine Nachricht über ICQ schicken
Standard

Ich bin auch seit jahren anfänger und das sind profis :P Dacht ich zumindest :P Naja da es bisher keine probleme gab, denk ich wirds schon nix ausmachen. Vielen Dank für eure Antworten, werd mich lieber nochmal über neuere Forensysteme schlau machen, zunot kauf ich mir mal eins (wollt ich eh schon machen, war bisher nur zu geizig, und für die meisten gibts ja genug hacks, da ist das kaufen unnötig :P)

Also nochmal vielen dank, habt mir sehr geholfen


Und ne user haben gar kein zugriff darauf was darin steht. Da sie die daten da nicht ändern können (ausser durchs viele posten eine +1 dazu XD)
Mit Zitat antworten
  #15 (permalink)  
Alt 01-10-2008, 15:23
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Noch als Nachtrag zu dem eval-Ansatz: Du kannst dir auch alle Parsertokens mit token_get_all holen und prüfen, ob ausschließlich erlaubte Operatoren und Ziffern verwendet werden. Dann kannst du auch locker eval verwenden.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:49 Uhr.