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, 10: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, 10: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, 11: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, 11: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, 11: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 11:38 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 01-10-2008, 11: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, 11: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, 11: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, 11: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, 11: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 11:58 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 01-10-2008, 11: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, 11: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, 12: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 12:17 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 01-10-2008, 12: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, 14: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

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

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:32 Uhr.