29. december 2003 - 22:44Der er
105 kommentarer og 2 løsninger
Vurdering af kode ønskes (gratis website incl. CMS)
Hej eksperter.
Jeg har i denne uge brugt en stor del af min tid, på at udvikle et website, som fuldstændig kan styres via et administrationsmodul. Og det er faktisk lykkedes ret godt, synes jeg :)
Jeg har tænkt mig at frigive systemet til andre. Men da jeg går meget op i sikkerhed, stabilitet og kvalitet, vil jeg meget gerne have nogen af jer til, at gennemgå koden, og fortælle om eventuelle fejl, mulige forbedringer osv.
Lidt feedback om, hvad I i det hele taget synes om systemet og ideen, ville også være rart.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Koden til Administrationsmodulet : User : test Pass : test
Vær venlige ikke at ødelægge noget. Nok er det et gratis-hotel. Men derfor kan man jo godt opføre sig ordentligt ;-)
Installationsvejledning :
1 ) Redigér de nødvendige punkter i config.php 2 ) Vær opmærksom på, at 2 punkter er tilført et # foran. Dette skal fjernes EFTER, at configure.php er kørt fra en browser. 3 ) Gå ind på filen configure.php vha. din browser. (sætter DB'en op) 4 ) Fjern nu de 2 #-tegn i config.php
Nu burde det hele fungere :-)
Jeg vil i den tilrettede version give mulighed for at sætte et prefix på tabel-navnene. Der er nok mange systemer, der benytter tabelnavne som "Menu, visitors" osv.
1) Parse error: parse error, unexpected T_STRING in /web/www/frac/users/jemt/ewm/main.php(11) : eval()'d code on line 1 Opstår ved visning af en side hvor der bruges PHP
Det er et kanon system du har fået opbygget der. Admin delen kan du nok godt bruge lidt mere tid på... Bare for brugervenlighedens skyld bør du dokumentere lidt mere. Jeg savner en funktion til at ændre selve design og layout via web.
Koden virker meget simpel, hvilket jeg godt kan lide. I forhold til mange andre CMS systemer kan dette bruges til at bygge videre på. Alt i alt synes jeg at det er godt arbejde. Efter at have kigget hurtigt på koden synes jeg at specielt dine queries godt kan optimeres lidt. Det er nok bare fordi jeg ikke kan lide "SELECT * FROM TABEL"... :)
Ville det ikke være en ide at indbygge et nyheds-system?
Hvis det er vil jeg gerne hjælpe til med udviklingen så vi kan få lavet et rigtig godt og brugervenligt system...
det virker ikke særligt logisk at man ikke skal bruge start og slut-ytags når man skriver php. Hvordan kan du så vide hvad det er php og hvad der er tekst?
Hvad angår news-system, så er det meningen, at den slags skal laves som plugin (eftersom der kan eksekveres PHP kode). Jeg vil helst ikke have flere filer (fil.php) liggende end højest nødvendigt :)
Ah, sejt :) Så kan jeg helt dropper det specielle felt i DB'en, der afgør om koden skal eksekveres som HTML eller PHP.
Jeg har dog en del problemer med PHP'en lige nu.. Hvis jeg indsætter flg. kode i min webeditor : $pages = mysql_query("select * from main where id='".$stat["page"]."'") or die(mysql_error()); Så får jeg fejlen : You have an error in your SQL syntax near 'page"]."'") or die(mysql_error()); $page = mysql_fetch_array($pages); ' at line 1
Jeg forstod ikke problemet, fordi jeg netop ikke selv er løbet ind i det problem, siden jeg fik egen server. Her kan jeg nemt bruge '. Det beklager fortolkeren sig ikke over.
Hvordan undgår jeg fejlen med '-tegn ? Min indsæt streng ser sådan ud :
$insertSQL = "INSERT INTO menu (name, description, category, link, target) VALUES ('$name', '$desc', '$cate', '$link', '$open')"; mysql_query($insertSQL) or die(mysql_error());
Webcreator > Jeg savner lidt muligheden for at lave andre bokse... Fx. rss feed etc. Desuden synes jeg det ville være fedt med bokse i højre og venstre side
fcknet > Forresten - tak for tilbudet om deltagelse til udviklingsarbejdet. Men jeg tror den bedste måde, du kan hjælpe på, er ved at kommenterer og rette kode her :-)
Fck > Hm, jeg må indrømme, at jeg ikke har tænkt mig at lave den slags udvidelser. Systemet blev primært lavet til folk med små behov. Det skal være et system, der (når det bliver færdigt), er nemt at bruge for ikke-super-computer-brugere, og samtidig ser rimeligt flot ud.
Som I måske kan gætte, skal der heller ikke stå PowerZone.DK på den endelige version. Der er jo skin'et til mit eget website.
Men det står jo enhver frit, at hente min kode, modificere den, og videregive den. Så længe man ikke ændre/sletter den about-side, jeg smider ind når jeg er færdig.
Og ang. PHP, så giver det jo også nogle muligheder. Fx. har jeg lige lavet en lille online-side, hvor man kan se hvem der er online. Men den virker ikke, eftersom jeg ikke må bruge 'tegn.
Håber at en vil give mig løsningen til, hvordan jeg får mulighed for at bruge alle tegn :)
Bare lige for at være sikker. Er denne fremgangsmåde så korrekt ? : (Jeg ønsker at omgive værdierne af \, så de kan indsættes i DB'en. Samtidig ønsker jeg ikke at \ fremkommer når jeg vil redigere mine ting).
Hmm... Selv er jeg en totalt tumpe til sådan noget PHP, og på den anden side, så har jeg og et par gutter vildt brug for et godt CMS system til et lille project vi kalder Paranut Project.
Hvis du virkelig er vild efter at lave et godt system, gratis for andre, hvorfor så ikke gøre det for et reelt formål. Du har allerede startet på det som vi har brug for til vores side, og med lidt arbejde tror jeg at det kan blive flot og funktionelt.
Vil du være interreseret i at arbejde på det for os? Til gængæld kan vi tilbydde design goder, og link til når engang den side bliver færdig.
Hvis du er, så gå til http://paranut.dk og skriv dig op som bruger. Derefter gå til http://paranut.dk/forum/viewtopic.php?t=1320, hvor dit arbejde allerede er under diskussion. Det ville være rart at høre fra dig, og det kunne da være fedt med et samarbejde.
schaefner > Din : eval(' ?' . '>' . $row['content'] . '<' . '?php '); virker ikke helt efter hensigten. Men hvis du kan få det til at virke, så ville det være perfekt. Kunne være en rigtig god forbedring.
Nu er der dog opstået et problem, jeg langt fra er glad for. Man bliver nød til at skrive <br>, for at få et linieskifte. Netop en af de ting, der gjorde, at folk slap helt for kode hvis de ville.
Desuden ser dit CMS meget fint ud. Jeg savner dog at kunne se et preview af en side inden man gemmer den. Hvad med billeder, vil det blive en mulighed? Jeg kan se der lige nu er en del problemer med at køre php-scriptsne ordenligt, men det bliver der vel rette op på.
Det virkede for mig lidt forvirrende at jeg først skulle oprette en kategori, så en side og efterfølgende et link til denne side. Linket til siden burde være under oprettelsen af denne efter min mening.
Hvad angår PreView, så vil jeg lige tænke lidt over det. Burde være nemt at lave.
Ang. billeder, så havde jeg egentlig ikke tænkt mig at lave andet end et eksempel på, hvordan man indsatte det vha. HTML kode. Men så skal folk jo også lige uploade det selv. Måske ikke så smart. Så jeg vil muligvis fikse noget i den retning også.
Pt. fungerer PHP scripts'ne ordentligt på mit eget hotel. Det store problem ligger i at få hele sitet til at virke på alle servere - lige meget om de benytter magic_quote eller ej. Så det bliver dagens opgave.
Jeg har delt administration af links, sider og kategorier mest muligt op, for at give mest mulig frihed. Det er ikke sikkert, at folk ønsker at gøre en side helt officielt. Derfor skal der være mulighed for at oprette tingene hver for sig.
Tjaeh, brugervenligt er det ikke helt endnu, dog vil jeg mene at alle sider som kommer opensource eller til gratis download, bør have en lille manual med. Fortsæt det gode atbejde, glæder mig til at se det færdigt. :)
Mange tak, ahv. Vil glæde mig meget, hvis du gider tjekke koden rigtigt igennem.
Artsycho > En manual skal der til, ja. Og den skal jeg nok få lavet til den endelige version. Jeg glæder mig også selv til, at kunne frigive systemet :)
Jeg har i filen admin/add.php forsøgt, at afhjælpe problemet ved brug af '-tegn. Det virker ved nogle punkter. Men fx. ved tilføjelse af en ny side med PHP kode, opstår der problemer. Alle mine \-tegn bliver fjernet. Og dem kan man altså ikke undvære i fx. echo "<div class=\"text\">".
Jeg kunne godt tænke mig at vide, om det er den måde jeg bør bruge systemet på, og hvordan problemet med manglende \'er kan løses.
Yderligere er install-metoden nu blot :
1 ) Redigér de nødvendige punkter i config.php 2 ) Gå ind på filen configure.php vha din browser. (sætter DB'en op)
Jeg håber koden vil blive gennemgået grundigt, så jeg kan få udgivet mit system. Pt. virker det perfekt på min egen server, men jeg benytter mig jo også af magic_quote.
Jeg synes mysql queries er mere over skuelige hvis det den "skal" står med stort, du har f.eks. skrevet:
select * from ".$prefix."main where id='$id' i main.php, jeg finder den mere overskuelig hvis der står:
SELECT * FROM ".$prefix."main WHERE id='$id'
Det er vidst skrevet før, dine queries kan opdateres en del, du hiver alt ud af dine tabeller og prøver kun 1-2 kolonner fra dem.
I visitors.php henter du ip'en som følger: $ip = getenv('REMOTE_ADDR'); Dette kan der være problemer med på nogle servere, derfor bør du hente ip'en på denne måde: $ip = $_SERVER['REMOTE_ADDR'];
I dine inserts har du f.eks: INSERT INTO ".$prefix."visitors (ip, page, time, count) VALUES ('$ip', '$page', now(), '1')
Jeg ville sætte ` rundt om kolonnenavnene, dette ville jeg gøre fordi, hvis disse ord/bogstavkombinationer i fremtiden skulle blive reseveret vil den melde fejl, dette vil den dog ikke gøre med ` rundt om navnet.
Du bruger bl.a. også: $func = $_REQUEST["func"]; Altså du bruger REQUEST til at få fat på variablen, dette kan skabe lidt problemer, da erfarne brugere så kan prøve at lave noget lort, lad os sige du her henter værdien fra en form med POST, så kan man skrive en variable i URL-add. som jo skal hentes med GET, men denne vil siden hente da du har sat den op til REQUEST. Jeg mener dermed at du bør gennemgå disse og tjekke efter om det er en nødvendighed at det er REQUEST og ikke bloe GET eller POST.
På dine admin sider bruger du følgende: $info = explode("|",$_COOKIE['sac']); $cookieuser = $info[0]; $cookiepass = $info[1]; Jeg håber da ikke du blot logger brugernavn og kodeord ukrypteret i en cookie?
Du tjekker desuden på admin siderne om både: $_SESSION['sacuser'] && $_SESSION['sacpass'] er sat. Er der nogen grund til det? Kan du ikke blot logge brugernavnet? Desuden synes jeg ikke jeg kan se at denne "sikring" er på alle admin-siderne?
Hvis jeg skal give lidt mere feedback på frontenden, så synes jeg det ville være godt hvis der under den side, hvor man kan få et overblik over alle siderne, kunne være en kolonne hvor der stod om der var et link til den pågældende side.
Hej Ahv. Mange tak for feedback. Jeg vil straks begynde rettearbejdet :)
Hvad angår min cookie, så ja - jeg har faktisk glemt at bruge MD5 - vil jeg lige lave om.
Skal ligeledes se på det andet.
Dette forstår jeg ikke : "Hvis jeg skal give lidt mere feedback på frontenden, så synes jeg det ville være godt hvis der under den side, hvor man kan få et overblik over alle siderne, kunne være en kolonne hvor der stod om der var et link til den pågældende side."
Bør jeg også gøre brug af '-tegn i forbindelse med ORDER BY ? $menu = mysql_query("SELECT * FROM ".$prefix."menu WHERE category='0' ORDER BY orderby");
Tjo, det ville jo egentlig være smart. Vil lige se, om jeg kan få tilpasset noget af koden, så det kan genbruges. Vender lige tilbage ang. dét, når jeg har lavet rettelserne på de fejl du har fundet.
Ok. Undrede mig også lidt over, at du ikke kunne se det. Men havde ikke tjekket, om jeg havde glemt mit check på en enkelt side. Men godt at vi er enige :)
Hm, kan du/I se nogen fejl i filen add.php hvad angår addslashes? På min egen server (magic_quotes_gpc = ON) virker det fint. På Frac.DK's server (magic_quotes_gpc = OFF) virker det ikke. Hvis jeg tilføjer : echo "hun sagde \"hej\"";, så ligger flg. i DB'en : echo "hun sagde "hej"";
Mangler dog stadig en løsning mht. de pokkers slashes. Kan jeg ikke få til at virke. Jeg kunne self. lave en funktion, som jeg smed mine variabler ind i. Denne ville dels tjekke, om magic_quotes var slået til, og hvis det er tilfældet, så stripslashes og efterfølgende slasher variablerne.
Jo, var også sådan jeg ville lave det. Og jeg har fundet ud af, hvorfor func=3 i min kode ikke virkede. Jeg stripslasher jo hele mit input. Så naturligvis fjernes alle \'er fra min kode.
$_POST['varname'] = variabler der er blevet sendt via en FORM med method="POST" $_GET['varname'] = variabler fra adresselinien, eg: index.php?side=index (FORM med method="GET") $_COOKIE['varname'] = variabler fra cookies $_REQUEST['varname'] = alle de tre ovenstående samlet i en $_SESSION['varname'] = variabler fra sessions $_ENV['varname'] = servervariabler om "enviroment" ting (brugerens IP) $_SERVER['varname'] = ass. servervariabler som fx PHP_SELF
Citat, Ahv : "Hvorfor kører du ikke alle dine inputs igennem denne funktion?" Er det ikke en smule overkill, hvis jeg ved, at indholdet blot er et tal ? - fx. et ID nummer.
Synes godt om
Slettet bruger
30. december 2003 - 17:18#91
Jo, så kan du nøjes med at kontrollere, om indholdet reelt er et tal med is_numeric
Hvis jeg f.eks. indtaster: http://www.jemt.frac.dk/ewm/index.php?id=11 Så kommer jeg til en 404 Not Found side. Jeg vil mene det var praktisk hvis du blot viderestillede til forsiden, eller til en anden side der forklarede at den pågældende side ikke findes.
Jeg har lige pillet ved filerne - nok derfor. Hvis en side ikke eksisterer, hentes siden med mindste nummer i orderby. Men faktisk er jeg usikker på, om det er den korrekte måde jeg får fat i denne post på. (i main.php)
Gider du/i tjekke den igennem endnu engang ? Hvis alt ser ok ud, så vil jeg få mit eget website configureret, og få udgivet mine 2 færdige systemet (EasyBookMarks er det andet).
Forresten har jeg valgt ikke at optimere mine MySQL queries. Dels finder jeg det meget behageligt, at jeg ikke skal tænke på at pille i mine MySQL sætninger, hvis jeg skal hente noget nyt data. Og så er det nemmere for andre, at udvikle videre på mit system.
Der er flere steder du bare tjekker om noget er sat ved at skrive if($var) { Hvis du vil være helt sikker så skal du nok bruge if(isset($var)) { Denne vil også tage højde for hvis værien er 0. Ville hvertfald tilføje den der hvor du gøre brug af forms, hvis du så tjekker om alle felter er udfyldt skal du bruge isset.
I din edit.php har du følgende: mysql_query("UPDATE ".$prefix."categories SET `name`='$cate' WHERE `id`='$id'") or die(mysql_error()); $suc = "Category updated successfully";
Hvis du vil være sikker på at den virkelig er opdateret kan du efterfølgende kører dette: if (mysql_affected_rows() > 0) { // Så er der virkelig sket en opdatering
Denne tjekker om der virkelig er ændret i en række i den givne tabel.
Du kunne også lave en funktion til når du skal udskrive nogle stringe, hvor du har spripslashes og htmlentities på.
Hvad angår tjek af variabler, så skulle jeg ellers mene, at jeg har tjekket på den måde jeg ønsker. Jeg vil ikke have, at man kan omgå de tvungne felter i en form. Det vil man jo netop kunne, ved at tilføje isset (så vidt jeg forstår). pt. skal brugeren indtaste i de felter jeg "forlanger".
Hvad angår tjekket på, om der _virkelig er_ sket en update, er det så ikke lidt overkill? Jeg har jo en 'or die(mysql_error());' på min streng. Så hvis en update ikke kan lykkes, så meldes der straks fejl.
Jeg er udemærket klar over, at du er langt bedre til PHP end mig - så ret mig endelig hvis jeg tager fejl :)
Jeg fandt nogle fejl i admin/edit.php. Jeg havde ikke brugt stripslashes/htmlentities korrekt. Så det fik jeg lige rettet. En ny version vil snart blive lagt op på www.powerzone.dk - så kan folk få lov at hente og installere system hvis de har lyst :)
Prøv at geninstallerer ved at følge beskrivelsen i readme.txt - Jeg havde ingen problemer med installation
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.