Program véleményezés
2011-08-31T14:42:38+02:00
2012-03-08T21:22:01+01:00
2022-06-29T07:20:24+02:00
  • Helló mindenki!

    Nemrég írtam egy fájl feltöltő osztály rendszert php-ban. Ami egyből egy adatbázisba is ment.

    Szeretném kikérdezni a véleményeteket biztonság, illetve hatékonyság szempontjából. Ha valakinek az a véleménye hogy se nem hatékony se nem biztonságos, akkor kérem fejtse ki nekem hogy mit lehetne rajta javítani. Bemutató még nincs hozzá, mert ez egy most készülő projecthez lesz. Egyedinek kell lennie.

    3 osztályból áll.

    1. File.class.php:
    class File { private $fields = array ( "name" => "", "src" => "", "type" => "", "id" => 0, "nyomtat_id" => 0 ); public function __get($name) { if (array_key_exists($name, $this->fields)) { return $this->fields[$name]; } return false; } private function __construct(array $properties) { foreach ($properties as $key => $value) { $this->$key = $value; } } public static function createNewFileObj($name, $type, $src, $nyomtat_id) { $props = array(); $props["name"] = $name; $props["type"] = $type; $props["src"] = $src; $props["nyomtat_id"] = $nyomtat_id; return new File($props); } }

    2. FileHandler.class.php (ez ment adatbázisba)
    class FileHandler { public static function saveFile(File $f) { $sql = "INSERT INTO files (name, type, src, nyomtat_id) VALUES "; $name = $f->name; $type = $f->type; $src = $f->src; $nyomtat_id = $f->nyomtat_id; $sql .= "('$name', '$type', '$src', '$nyomtat_id');"; $cmd = MySqlCommander::getInstance(); if ( ($cmd->command($sql)) ) { $f->id = $cmd->insertId(); return $f->id; } return false; } }

    3. Uploader.class.php (ez tölt fel)
    class Uploader { private $fileArray; private $errors = array(); private static $userLibRoot = "/uploaded"; private static $pre = "netc_"; public function __construct($fArray) { $this->fileArray = $fArray; } public function upload($nyomtat_id) { if ($this->isValid()) { $src = $this->moveFileToUserLib($nyomtat_id); if (!$src) return false; $info = pathinfo($src); $name = $info["basename"]; $type = $info["extension"]; $fileObj = File::createNewFileObj($name, $type, $src, $nyomtat_id); return $this->saveToDb($fileObj); } else { _ss("errors",$this->errors); return false; } } private function saveToDb(File $f) { return FileHandler::saveFile($f); } private function moveFileToUserLib($nyomtat_id) { $userId = _gs("uid"); $root = getcwd(); if ( !is_dir($root . "\" . self::$userLibRoot."\".self::$pre.$userId)) mkdir($root . "\" . self::$userLibRoot."\".self::$pre.$userId); $userLib = $root . "\" . self::$userLibRoot . "\" . self::$pre . $userId . "\"; $name = $this->fileArray["uploaded"]["name"]; $path = $userLib . $name; $tmpName = $this->fileArray["uploaded"]["tmp_name"]; if ( ! move_uploaded_file($tmpName, $path) ) { return false; } return $path; } private function isValid() { $allowedTypes = array( "application/acrobat", "application/x-pdf", "applications/vnd.pdf", "application/pdf", "text/pdf", "text/x-pdf", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.ms-excel", "pplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "image/jpeg", "image/pjpeg", "image/bmp", "mage/png" ); if ( !$this->checkFileName() ) { $this->_err("A fájl nevének formátuma helytelen!"); } $mime = $this->fileArray["uploaded"]["type"]; if ( ! in_array($mime, $allowedTypes) ) { $this->_err("Érvénytelen fájl típus!"); } return empty($this->errors); } private function checkFileName() { $name = $this->fileArray["uploaded"]["name"]; $regex = "/^[a-zA-Z0-9ÖÜÓŐÚÉÁŰÍIöüóőúéáűíi_]+\.[a-zA-Z]{3,4}$/"; return preg_match($regex, $name); } private function _err($mess) { $this->errors[] = $mess; } }

    Az isValid függvényben szereplő nagy tömböt ki fogom venni a config.php-mba de most szerintem a tesztek alatt jólvan az ott.
    Mutasd a teljes hozzászólást!
  • Néhány kört lenyomtam két kézzel. Elsőre nem rossz, csinosítgasd, aztán jöhet a következő verzió!
    Mutasd a teljes hozzászólást!
  • Nem tudom, hogy ezt most ügyvitel vagy játék szempontjából kell nézni.

    Ügyvitel szempontjából a felület desing és a használat szorul csiszolásra. Ha felugrik egy dialógus, ne lehessen eltüntetni onnan egy mellékattintással.

    Ha játék, akkor pedig ne vibráljon egy GDI+ felületen, hanem tessék d3d-t használni, xna-val például.

    Valamelyik irányba szerintem lépj tovább.
    Mutasd a teljes hozzászólást!
  • Jó játék, szerintem csinosítani kéne ( játtékháttér stb.)
    Mutasd a teljes hozzászólást!
  • Nem rossz
    Mutasd a teljes hozzászólást!
  • Jöhetnek még a válaszok.
    Mutasd a teljes hozzászólást!
  • Köszi, hogy időt szakítottál rá. LCD monitoron csináltam, de én is észrevettem, hogy a másik gépen villog, ezt majd kijavítom. A kezdőhosszúság azért 40 mert 40pixel hosszú kezdetben a kígyó. Majd ez 10pixelenként változik. Valóban előfordulhat számítási hiba, mert ma délelőtt babráltam vele.
    Mutasd a teljes hozzászólást!
  • Az se felejtsd el leírni, hogy .NET 4.0 kell a futtatáshoz, mert sokak gépén nincs fenn és ők hiába próbálkoznak.

    Én kipróbáltam, kezdőtől nem rossz.

    Javaslatok:
    1-villog a képernyő, ezzel csinálj valamit.

    2-második játékost lehessen választani, hogy "ember" vagy "gép", mert ha egyedül játszanék akkor a második játékost irányíthatná a gép, vagy meg se jelenjen akkor.

    3-ami viszont hiba: nyomtam egy partit és a "game over" képernyőn azt írta a gép, hogy 0 pontom volt, pedig felszedtem pár bigyót, meg hossza mindkettőnkre 40-et, ami tuti hogy nem a valóság. Szóval a végén valami számítási hiba, vagy véletlenül nullázod a pontot.

    A Resources mappában miért van az a két virágos kép? Mert nekem a játék folyamán nem jelentek meg, de lehet csak nem találta hogy hol van. Ha mégis kellene neki, akkor készíts egy rendes "telepítőt", másolj össze egy könyvtárba mindent ami szükséges és működjön magában, ne a fejlesztői változatot keljen letölteni.
    Mutasd a teljes hozzászólást!
  • Ja am C# nyelven van a program.
    Mutasd a teljes hozzászólást!
  • Sziasztok.
    Csináltam egy kezdetleges snaket és szeretném, ha véleményt mondanátok a kód minőségéről, valamint az átláthatóságáról.
    A link: https://rapidshare.com/files/2513734837/Pondro.zip

    Még haladónak se mondanám magam szóval csak finoman :)
    Mutasd a teljes hozzászólást!
Címkék
abcd