sysix / dynao-cms Goto Github PK
View Code? Open in Web Editor NEWCM-System
License: GNU General Public License v3.0
CM-System
License: GNU General Public License v3.0
Usecase:
$sql = new sql();
$sql->query('......'), MYSQL_NUM);
while($sql->isNext()) {
$sql->next();
}
Nachdem sql->next()
aufgerufen worden ist, setzt er den query wieder auf default wert.
Es liegt daran, dass sql->next()
sql->result()
aufruft ohne parameter zu übergeben
Eine Addonliste die abgearbeitet wird
Addon vorschläge kann man natürlich auch hier schreiben.
Hallo ich hba gerade ein Test gemacht wer schneller ist:
strpos vs in_array?
Mein Code:
$string = '|1|2|3|6|';
$gesucht = 3;
$gesucht2 = 7;
$durchlauf = 1000000;
$start = microtime(true);
$array = explode('|', $string);
for($i=0; $i<$durchlauf; $i++) {
if(in_array($gesucht, $array)) { }
}
$time = microtime(true) - $start;
echo 'in_array gefunden Dauer: '.$time.' Sekunden<br />';
$start = microtime(true);
for($i=0; $i<$durchlauf; $i++) {
if(strpos($string, '|'.$gesucht.'|') !== false) { }
}
$time = microtime(true) - $start;
echo 'strpos gefunden Dauer: '.$time.' Sekunden<br />';
$start = microtime(true);
$array = explode('|', $string);
for($i=0; $i<$durchlauf; $i++) {
if(in_array($gesucht2, $array)) { }
}
$time = microtime(true) - $start;
echo 'in_array nicht gefunden Dauer: '.$time.' Sekunden<br />';
$start = microtime(true);
for($i=0; $i<$durchlauf; $i++) {
if(strpos($string, '|'.$gesucht2.'|') !== false) { }
}
$time = microtime(true) - $start;
echo 'strpos nicht gefunden Dauer: '.$time.' Sekunden<br />';
explode hab ich extra im Zeiterfassung mit riengehauen, da das in unseren Code auch als Zeit aufgefasst werden muss ;)
Wieso der Test?
4bd0670#L1L26 hab ich in_array mit strpos ersetzt.. weil das Codesparender war.. aber nicht perfomance
Was machen wir nun?
strpos drinlassen und die "wertvolle" Zeit verlieren oder wieder umbauen :)?
Hallo,
wirh aben schon seit Monaten nichtmehr miteinander diskutiert (auch andere Mitglieder hier bei uns). Ich bitte euch einen geregelten Ablauf einzuplanen. Damit ihr mindestens eine Halbe Stunde in der Woche Zeit habt für das CMS.
Die Halbe Stunde wird folgendes besprochen:
Da ich persönlich immer erst ab 6Uhr daheim bin. Ergibt es einen Zeitraum von 18:00 Uhr bis 22 Uhr.
Natürlich muss ich jetzt selbst nicht immer dabei sein
Falls was Wichtiges besprochen worden ist, bitte hier irgendwie Vermerken, damit die anderne, die nicht dabei waren natürlich auch UptoDate sind.
Gruß Sysix
Hi,
I just installed dynao and when I go to modules I got this
Notice: Undefined variable: form in /var/www/html/admin/pages/structure.module.php on line 247
Fatal error: Call to a member function show() on null in /var/www/html/admin/pages/structure.module.php on line 247
Hier werden alle Bugfixe die uns bekannt sind reingeschrieben.
Damit man diese noch fixxen können :)
Wir müssen uns Überlegen wie mir die autoload class für die anderen Klassen machen, da es bei uns paar Probleme gibt:
Standard:
Die Klasse hat genau den gleichen Namen wie der Dateinamen
Falls wir jede Datei im ordner classes includen kann es zu einen Fehler kommen, da es Kindklassen gibt.
Deswegen meien Überlegungen jede Datei erstmal öffnen schauen obs ne Kindklasse ist, wenn ja => In Warteschleife stecken und warten bis die Vaterklasse included wird.
Dann die Kindklasse includen
Dafür hab ich mal nen kleinen Script programmiert:
Öffnet die Klasse Datei mit den ersten 200 Ziffern
mit regex schauen ob Kindklasse ist oder nicht
$section = file_get_contents('admin/lib/classes/form/text.php', NULL, NULL, 0, 200);
echo htmlspecialchars($section).'<br />';
$section = preg_match('/class (\w+) extends (\w+)/', $section, $treffer);
/ #Anfang
class # Muss mit class beginnen
(\w+) #Alle Möglichen buchstaben, Zahlen und Zeichen
extends #Muss dann extends besitzen
(\w+) #Alle Möglichen buchstaben, Zahlen und Zeichen
/ Ende
Als Result würde dann das kommen
Array (
[0] => class formText extends formField
[1] => formText
[2] => formField
)
Getestet:
if(in_array($action, ['add', 'edit'])
vs.
if($action == 'add' || $action == 'edit')
Ergebnis
inArray Dauer gefunden: 1.7210228443146
or Dauer gefunden: 0.57511186599731
inArray Dauer nicht gefunden: 1.7310140132904
or Dauer nicht gefunden: 0.59595799446106
Funktionen:
Sonstiges:
Wollen wir weiterhin FontAwesome nutzen oder evtl auf svg icons umstellen?
Vorteile wären:
Nachteile
Hab endlich den Code richtig zum laufen bekommen:
static public function checkVersion($version1, $version2) {
$version1 = str_replace(' ', '.', $version1);
$version2 = str_replace(' ', '.', $version2);
$version1 = explode('.', $version1);
$version2 = explode('.', $version2);
$depth = [
lang::get('version_fail_version1'),
lang::get('version_fail_version2'),
lang::get('version_fail_version3'),
'You have a Old Version',
];
$versionArray = array_flip(['RC1', 'RC', 'RC2', 'RC3', 'b', 'beta', 'a', 'alpha', 'dev']);
foreach($version1 as $i => $version) {
if(isset($version2[$i])) {
if(is_numeric($version) && is_numeric($version2[$i])) {
if($version2[$i] > $version) {
return $depth[$i];
}
} else {
// 1.1.1 > 1.1 RC
if(is_int($version2[$i])) {
return $depth[4];
}
if(isset($versionArray[$version])) {
$version = $versionArray[$version];
}
if(isset($versionArray[$version2[$i]])) {
$version2[$i] = $versionArray[$version2[$i]];
}
//var_dump($version, $version2[$i]);
if($version2[$i] < $version) {
return $depth[3];
}
}
} else {
// 1.1.1 > 1.1
return !isset($versionArray[$version]);
}
}
$count1 = count($version1);
$count2 = count($version2);
if($count1 < $count2) {
$diff = $count2 - $count1;
if($diff == 1) {
return isset($versionArray[$version2[$count2-1]]);
}
}
return true;
}
Vergleiche "1.0.3" mit "1.0.2" :true
Vergleiche "1.0.1" mit "1.0" :true
Vergleiche "1.0.2 RC" mit "1.0.2 RC3" :true
Vergleiche "1.2" mit "1.1" :true
Vergleiche "1.0" mit "1.0 b" :true
Vergleiche "1.0.2" mit "1.0.3" :false
Vergleiche "1.0" mit "1.0.1" :false
Vergleiche "1.0.2 RC3" mit "1.0.2 RC" :false
Vergleiche "1.1" mit "1.2" :false
Vergleiche "1.0 b" mit "1.0" :false
Vielleicht fällt dir noch nen komplizierten Fall ein?
Noch ein bisschen ausfeilen und ihc würd gern die Methode so übernehmen.
Deine Meinung?
hab folgendes von nem Benutzer bekommen:
Also:
http://demo.dynao.de/admin/index.php?page=dashboard
POST Exploit
Login "Bypass".
Konnte nur Emailabfrage umgehen, PW muss trz. gecracked werden.
Einfach [String] durch die Strings ersetzen.
Post:
email=[String]&password=[String]&login=
x" or "x"="x
" or "x"="x
" or 0=0 #
" or "a"="a
sqlinject" or "a"="a
XSS Lücke: Cross Site Scripting
"><script>alert(/XSS/);</script> "><script>alert(1);</script> "><script>alert('XSS');</script> "><script>alert("XSS");</script> "><script>alert(document.cookie);</script>
usw.
<?php
function generateSalt($length) {
$str = '';
for($i = 0; $i < $length; $i++) {
$str .= chr(rand(33, 255));
}
return $str;
}
$time = microtime(true);
for($i = 1; $i <= 100000; $i++) {
$salt = generateSalt(6);
hash('sha256', $salt.'test'.$i).'<br />';
}
$end = microtime(true);
$ziel = $end-$time;
echo 'Resultat '.$ziel;
?>
Resultat 1.1267569065094
sha256 würd ic hsagen reicht und bei 100.000 durchläufn ist die Zeit auch nicht schlecht :). Mann muss noch beachten dass die Funktion jedesmal erstellt werden muss und die DB Abfrage...
Aber 100.000 User werden bestimmt nicht gleichzeitig eine Seite öffnen (Außer DDOS :D)
Und der Salt wird ja nur bei einen neuen User erstellt ansonsten wird ja nur hash aufgerufen
Irgendwelche optimierungen noch? Was zeit bei dir das Ergebnis?
Sonstiges:
Slots:
Ich fände (Modul-) Positionen passender, also auch getPosition (gerade wenn man bald mehrere Module auf einen Slot/eine Position setzen kann)
Templates (die man pro Template anlegen/auswählen kann):
Hier fände ich Ansicht (engl. View) besser, da man sonst mit Templates durcheinander kommen kann
Module:
würde ich so lassen
Navigationspkt Struktur:
Diesen in Inhalt (engl Content) umbenennen, da man hier auch Module verwaltet
Sonst noch was ändern ? Deine Vorschläge? Community fragen?
Hey hey,
wir sollten uns langsam überlegen einen Namen für unsere einzelnen Seiten zu nehmen.
Sprich wie heißt bei uns z.B: eine Seite, oder ein Bereich einer Seite.
Structure wär ja sinnlos weil es ja ein Artikel ist und keine Struktur.
Mein Vorschlag:
Komplette Seite: article
Bereich der Seite (von Modul zusammengesetzt): article_area
Mir ist das Wichtig, da die Artikelbereiche noch in der module Klasse sind, obwohl es ein andere Arbeitschritt (= andere Klasse) sein sollte.
Das muss noch unbedingt gemacht werden ;)
nochmal ne abfrage ob dateitype image ( https://github.com/callofsorrow/dynao-CMS/blob/master/admin/addons/mediamanager/install.php#L5 )
Wenn ja dann Bildanzeigen ;)
Wenn nicht kann man ja ein Default-Pic anzeigen oder ein Fa-Icon :)
Gruß Sysix
System:
Vorschläge einfach editieren und drunterschreiben!
Hab mich nun etwas damit beschäftigt und nun kommt folgende Frage auf:
Wie wollen wir die "Config" Datei aufbauen?
Mit XML? JSON oder YAML?
Hier paar Denkansprünge:
http://www.markfalto.com/Blog/post/XML-vs-JSON-vs-Yaml-serialization.aspx
http://www.phpblogger.net/2007/07/15/der-vergleich-xml-json-yaml-und-co/
XML würde für mich klar gewinnen, wäre da der "Metadata Overhead" nicht, sprich zu viel Quellcode, der nicht gebraucht wird.
JSON ist fast genausoschnell wie XML, wenn nicht schneller (nach dem 2ten mal Laden, jedoch bräuchten wir ja nur die Config einmal laden und einbinden?)
Aber YAML hat eine kleine Datengröße. Macht das Sinn darauf zu achten?
Was hälst du davon :)?
Bin auf folgendes gestoßen :
http://cmstutorials.org/tutorial/view/why_you_should_be_using_phps_pdo_for_database_access
So können wir verschiedene Datenbanken unterstützen .. was hälts davon ?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.