Премини към съдържанието

Random Person

Потребител
  • Публикации

    22
  • Регистрация

  • Последно онлайн

Всичко публикувано от Random Person

  1. Държа да спомена ясно и точно, че Opera VPN реално не е VPN, а прокси и предвид колко информация събират от Opera, по никакъв начин не е разумен избор. Предполагам върши работа, ако трябва еднократно да отвориш нещо с друго IP в случай в който реално не те интересува дали е анонимно, а просто искаш достъп до нещо.
  2. До колкото разбрах съм правил това и аз за телевизор. Mkv е контейнер и може да се премахват/добавят аудио, видео и други потоци без encoding (без загуба на качеството, на теория сигурно има, но...). Използвах mkvtoolnix gui, която е безплатна, но може и с други. Взех аудио потока от филма, форматирах го чрез друга програма и след това го добавих, за да имам оригиналния и новият. Очевидно, може да се замести в случай, че не може да се избира аудио поток при възпроизвеждане.
  3. От много години www не се среща толкова често както в ранните години на интернета. Вече се добавя ако името ще изглежда по-добре с www и няма никакво друго значение (изключвам малко по-различната настройка на DNS и бисквитките, защото не е от значение за автора на темата). Разширението си е напълно нормално. Като цяло .ru означава, че сайта е руски, както .bg означава, че е български. Има подобни разширения за много държави. Тези две неща по-горе няма как да са знак дали сайта е рисков от към вируси или недостоверна информация. Е, ако е с безплатен домейн като .tk, .ml и подобни тогава има вероятност да е. Конкретно споделеният сайт изглежда да е ок. Съдържанието не се разбира много, защото някои сайтове като този правят автоматичен превод към няколко езици. Като цяло Гугъл рядко ще даде линк към злонамерени сайтове освен ако не се търси по разширен начин. Ако имаш разширение на браузъра или антивирусна, която блокира достъпа до списък със злонамерени сайтове почти винаги няма какво да му мислиш.
  4. Може би не видя предишният ми отговор - от php 7 тази функция я няма. Няма как да използваш mysql_connect. Уау от 5.6 на 7.4 и реши, че няма нужда да бъде споменато в началото? Дори Wordpress, който уж поддържа 5.6 за сега, сигурно ще е трудно да се обнови. Ще трябва да минеш на PHP версия под 7 или да го пренапишеш. Ще дам едно ужасно решение, което е сравнително лесно да се направи, но не винаги ще работи. Може да потърсиш във всички файлове на скрипта присъствието на функциите като mysql_connect, mysql_query, mysql_fetch_assoc.. и да ги замениш с mysqli_connect, mysqli_query,mysqli_fetch_assoc... Но не мога да не спомена колко лоша идея е в днешно време да се използва толкова стар код. От множеството PHP бъгове и дупки в сигурността, това че mysql_connect не поддържа prepared statements означава, че дори да сработи ужасното решение горе, целият код ще е рай за sql инжекции. Освен ако няма добра валидация в която няма бъгове.
  5. Random Person

    PHP Помощ

    Като за начало виж как да получиш информацията въведена от формуляра. Използваш POST, което означава, че ще трябва да използваш $_POST. После в php кода трябва да провериш с if дали бутона е натиснат и има въведена информация (може и без но ще получиш съобщения когато няма въведена информация). Това може да стане с проверка дали $_POST е празно (функция empty) или дали метода е POST чрез $_SERVER["REQUEST_METHOD"] ; След това вземи съдържанието на chis и cif полетата с $_POST['chis'] и $_POST['cif'] и го присвои към променлива, ако искаш. Самата проверка може да се направи по няколко начина. Ето най-лесните два според мен: - Създаваш променлива за броя срещания. Примерно $seen = 0; Чрез for цикъл и използваш chis (това е N от условието) като масив. Първата цифра ще вземеш с $_POST['chis'][0] и с if може да провериш дали е равна на $_POST['cif']. Aко е равна добавяш едно към $seen ($seen++). Накрая променливата $seen ще съдържа брой срещания на указана цифра (cif). - Най-лесното е с функцията substr_count. За първи параметър слагаш с $_POST['chis'], а за втори $_POST['cif'] и получаваш броя срещания на указана цифра (cif). Цялото решение в един ред. Бих коригирал кода с готов работещ, но мисля че описанието ми е ясно и ще се справиш сам, защото трябва да научиш споменатите неща, за да я направиш. Ако има грешки и/или въпроси ще отговоря.
  6. С предоставената информация единствената грешка, която виждам е използването на mysql_connect през 2021 г. От PHP 7 е премахната. От PHP 5.5 може да има предупреждение. Увери се, че не използваш PHP 7 или по-нов.
  7. Ами да... За какво е този BLOB като няма да качваш самата снимка в БД, нито кода е подходящ за BLOB... Може да използваш image_name като замениш това: $sql = "INSERT INTO form (name, image, phone, email) VALUES ('$name', '$image', '$phone', '$email')"; с това: $sql = "INSERT INTO form (name, image_name, phone, email) VALUES ('$name', '$image', '$phone', '$email')"; Сега ако image не може да е празно ще има грешка...
  8. Първо, заглавието на темата и кода казват различни неща. Искаш да качиш снимката директно в базата данни (mysql) или по разумният начин в базата данни да съхраняваш само името на файла и/или директорията, а самият файл да си е на сървъра? В началото взимаш правилно информация за качения файл и после в някакъв опит за валидация правиш това: $_REQUEST['image'] - Може да направиш var_dump($_REQUEST); да видиш, че няма такова нещо... После може да разгледаш по същият начин $_FILES, променливата, която трябва да ползваш. Набързо ще ти дам примери за двата начина спрямо твоя код, за да не чакаш отговор. 1. Качване на файла в сървъра със запазване на информация за него в БД Просто добави това и трябва да качи файла в папката images (ако я няма ще даде грешка). $newFileName = $_FILES['image']['name']; $dest_path = __DIR__ . "/images/" . $newFileName; if(move_uploaded_file($_FILES["image"]["tmp_name"],$dest_path)){ echo "Успешно."; } и по-долу вместо това: $image_name = mysqli_real_escape_string($link, $_REQUEST['image']); $image = file_get_contents($image_name); слагаш това: $image = $newFileName; или заместваш директно в sql. Това ще качи името на файла в базата данни. От теб зависи да направиш валидация, че името на файла не е същото като на вече качен файл. Като цяла просто вземи разширението на файла и генерирай уникално име...Имам предвид и валидация на всичко друго, защото липсва. 2. Ако искаш да буташ всичко в БД $image_base64 = base64_encode(file_get_contents($_FILES['image']['tmp_name']) ); $image = 'data:image/'.$imageFileType.';base64,'.$image_base64; Това по-горе ще конвертира снимката в base64 и ще запази всичко в променливата $image, съдържанието на която трябва да качиш в БД. Премахваш тея редове: $image_name = mysqli_real_escape_string($link, $_REQUEST['image']); $image = file_get_contents($image_name); За да може после да качиш $image от по-горе. 👉 !!! Изисква много място и ще има проблеми с големи файлове (от лимита в php.ini). Колоната image където ще съхраняваш самата снимка, трябва да е най-малко от тип text, най-добре longtext. И за да покажеш снимката: Взимаш съдържанието на image в таблицата "form" и го слагаш в променлива, примерно $image_src: <img src='<?php echo $image_src; ?>' > Това е "тъпо", дано имаше предвид първия начин. Успех.
  9. Moodle е система с отворен код за електронно обучение (безплатна). Могат да се създават курсове/предмети и за всяка седмица да се качват материали за всеки курс и да се създават тестове, който да се решават онлайн... Има блог, форум и като цяло всичко каквото може да е нужно го има вградено или чрез разширения. Но изисква много повече усилия за създаване на нещата. В случай, че се ползва от 1 до около 5 класа, Moodle ще достави ненужно усложняване на нещата според мен, но при цяло училище тогава е нужно усложняване и е най-подходящо. При цяло училище ще е нужен хубав vps хостинг, а при цял град в зависимост от активността сигурно ще трябва цял физически сървър, което е много скъпо...
  10. Сигурно търсиш решение за класа, а не за по-голяма група като цялото училище. За клас, форум е добър избор. За примерно цялото училище е подходящ Moodle, който е направен специално за това, но вече повечето училища го имат поне около мен. Предвид колко е различен изисква доста време да се разучи и самата система е "малко" тежка. На безплатен хостинг най-много да подкараш CMS системата. Допълнително ще е най-много с 5GB място. Дори да си кажеш, че ще ти е достатъчно и ще ползваш външни услуги като google drive за големи файлове, имай предвид, че тези хостинги имат страшно ограничено CPU време. Веднъж спрях хостинга на един сайт само като задържам F5 два пъти за една минута, но да беше без CDN. Дори повечето платени имат нелепо малко време за мен. Можеш локално с XAMPP да инсталираш няколко форум системи и да тестваш, коя ще ти е най-добре за теб.
  11. Държа да спомена, че за софтуер като php под последна версия се разбира различно. Може да си с 7.1 и ще получаваш ъпдейти за 7.1, и ще си с последна версия за 7.1, но има и версия 7.3. Приех, че си с 7.2 и apache2 според последният ти отговор. Ако не си промени командите. Ще дам някои команди без да съм много сигурен за точния софтуер, който ползваш. Изпълни следната команда: sudo a2dismod mpm_event && a2enmod mpm_prefork && a2enmod php7.2 Реално са три команди разделени с &&. Може и поотделно. В случай, че излизе, че не съществуват изпълни следните две: sudo apt purge libapache2-mod-php7.2 libapache2-mod-php sudo apt install libapache2-mod-php7.2 libapache2-mod-php И след която и да е: sudo service apache2 restart След това провери как са нещата. Ако няма ефект отвори този файл: /etc/apache2/apache2.conf със nano или някой друг. И добави това накрая: <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> Ако вече не го има. Като цяло командите горе и редакцията на този файл би трябвало да направят същото каквото @Крематориум написа, но с автоматична редакция. Пробвал съм командите на стара виртуалка и работят както трябва, но зависи от твоята конфигурация. То дори да успееш според мен ще ти липсват важни php модули, които се изискват от Wordpress и phpmyadmin... Aко отново нищо не стане... Както каза @petie1 виж дали се пълнят логовете. Файла е в /var/log/apache2/error.log (по подразбиране).
  12. Здравей, Може би apache не е настроен да използва php и/или му липсват нужните модули, за да изпълнява php код вместо показва. Не си споменал конкретните версии на всеки софтуер, които си инсталирал, затова няма да давам примерени команди. Потърси за a2enmod. Пробвай да използваш --reinstall на пакетите като libapache2-mod-php Като цяло потърси "Apache shows php code instead of executing" с гугъл и пробвай нещата от първите позиции. За по-сигурно, преди да потърсиш за това, направи php файл съдържащ phpinfo() : <?php phpinfo(); ?> И ако само показва кода, направи това, което написах. Подобни глупости предполагам може да станат и от .htaccess, но в този случай най-вероятно VirtualHost на apache и настройките му за директорите, но едвали...
  13. Без да се види кода как е направено не може да се каже за конкретният случай как да стане. За да се направи това трябва да има връзка (relashinship) между постовете и потребителите. Но тази връзка зависи от създателя на скрипта как ще се направи. Може да се контролира от базата данни или скрипта. Най-честият метод е в таблицата със постове да има колона за ИД на потребителя. В този случай се прави SQL заявка като: $sql = "SELECT * FROM `posts` WHERE user_id = 1"; $result = $conn->query($sql); И връща резултата. Разбира се, заявката по-добре с prepare() и верификация. Също може отделна колона, която да съхранява ИД на поста с ИД на потребителя, както и всевъзможни други варианти. Що се отнася до това всички да публикуват постове, виж къде проверява дали е админ и го махни, така да се каже. Предполагам няма да е реален публичен проект, защото готовите безплатни скриптове из интернет за блогове последно като ги гледах бяха много зле от към сигурност. И допълнително ако всеки може да добавя съдържание и то е без escaping на опасни тагове и верификация...
  14. Щом на компютъра ми с 750Ti и второ поколение intel i3 работи тази опция, бях скептичен, че писаното от теб е вярно. Намерих като изисквания за видеокарта: "Most GeForce 600 series or later; Most Quadro K series or later" с поддръжка на "Intel Quick Sync H.264; NVidia NVENC; AMD VCE". Не успях да видя изискване за DirectX, но има ли значение? Щом DirectX 12 тръгва на 750TI (което ме изненада, мислех че не го поддържа), то ако не тръгва на по-слаби, в зависимост какво ще снимат, ще им е най-малкият проблем. Затова процента потребители, които не могат да си го пуснат, мисля, че е най-много 69%.😜 Но благодаря, че го спомена. Напълно бях изключил, че трябва да има някакви системни изисквания, които щеше да е добре да спомена в първото ми мнение.
  15. Здравей, не си казал версията на Windows, но в случай, че си с Windows 10 има вградена програма за това. Потърси Xbox Game Bar или Game Bar в търсачката на Windows или натисни бутона на Windows заедно с буквата "G" на клавиатурата. В случай, че не записваш игра може да излезе съобщение, че не разпознава отворена игра, но просто избери, че е игра и го игнорирай. Работи за запис на всичко. Ще трябва да влезеш в настройките, за да сложиш отметка да показва мишката в клиповете, но важното е че може. Възможно е версия на Windows 10 да го няма, но това ще са версии като windows 10 Enterprise N, които по подразбиране нямат мултимедиен пакет или каквото беше там, но това е рядкост. Ако не си на Windows 10 в допълнение от предните мнения се сещам за OBS Studio, но не знам колко ще е удачна.
  16. Все пак да кажа... Да, изисква повече търсене и със сигурност няма да намериш безплатно хубави клипове за всички, които искаш, но се намират. Изисква се и малко хитрост. Малко на линията на правилата на форума ще дам пример - ако има демо видео с ниско качество в youtube, или където и да е, може да използваш него. Все пак ако е 480p и го слагаш с малък размер над 1080p клип няма да си личи толкова. Ако демо клипа има лого или текст в ъгъла, може и това да се премахне. Също се намират и със син екран. Но вече тук идват авторските права затова внимавай какво взимаш ако не си го закупил. Потърси някаква статия за разширено търсене с google (примерно filetype: за определени файлове и най-вече използването на кавичките; Ако знаеш английски потърси нещо като "google advanced search operators"), което ще ти помогне за намиране на платени неща безплатно и като цяло това, което искаш. Но да, очевидно, ако искаш всичко да стане бързо и лесно ще ти струва пари...
  17. Здравей, Подобна 3D анимация се прави на софтуер като Cinema4d, Мaya, 3ds Max, Blender, а също и друг CAD софтуер. Blender е безплатен. Това е професионален софтуер и се използва главно от хора, които са учили с години. Реално, трябва да си избереш програма и направиш 3Д модел на всеки мм. на продукта, и след това да направиш подходяща анимация заедно с подходящо движение на камерата/изгледа към това, което искаш да покажеш. Това отнема страшно много време. Може да се мине тънко ако има готов модел на устройството/продукта и съответно да се направи само анимация, но пак не става бързо. Подобни готови 3D модели може да се намерят в сайтове като free3d и archive3d. Ако някой знае по-лесен начин, ще ми е интересно да разбера. Това в предвид, че го искаш бързо и лесно, както повечето, но ако можеш да отделиш времето и имаш желание, избирай софтуер и почвай да го изучаваш.
  18. Здравей, от това, което разбрах не мисля, че има нужда да правиш 3D анимация с програми като blender, maya и cinema4d, най-малкото защото е голямо усилие, най-вече ако трябва сам да си направиш модел на животно и след това ригване и анимация... Може да намериш готов ригнат модел, но пак е много повече усилия от предложението ми долу. По-лесният вариан е с готова анимация пред зелен екран. Потърси примерно "green screen animation animal" и ще ти излязат много. С малко по-специфично търсене (не само за зелен екран) след известно време няма начин да не намериш нещо много подходящо. Добавяш видеото в програмата и премахваш зеленият екран, за да стане фона прозрачен (ако не знаеш как потърси видео как се прави за програмата, която ползваш). След това скриваш видеото от екрана и с най-проста анимация движеш клипа да се покаже над твоя във избрано място. В зависимост от готовата анимация може да изглежда странно, затова ще е добре да потърсиш повече. Примерно добре би трябвало да изглежда клип с котка която върви примерно от дясно на ляво и след това спира и сяда. В програмата докато котката върви ще анимираш целият клип да се движи от дясно на ляво и реално ще изглежда достатъчно добре, че котката върви върху клипа ти. Надявам се, това е каквото искаш да направиш. П.П. Извинявам се за двете съобщения. Като натиснах бутона за запис се забави много. След това на началната страница излезе грешка 503...Заета работа...
  19. Здравей, от това, което разбрах не мисля, че има нужда да правиш 3D анимация с програми като blender, maya и cinema4d, най-малкото защото е голямо усилие, най-вече ако трябва сам да си направиш модел на животно и след това ригване и анимация... Може да намериш готов ригнат модел, но пак е много повече усилия от предложението ми долу. По-лесният вариан е с готова анимация пред зелен екран. Потърси примерно "green screen animation animal" и ще ти излязат много. С малко по-специфично търсене (не само за зелен екран) след известно време няма начин да не намериш нещо много подходящо. Добавяш видеото в програмата и премахваш зеленият екран, за да стане фона прозрачен (ако не знаеш как потърси видео как се прави за програмата, която ползваш). След това скриваш видеото от екрана и с най-проста анимация движеш клипа да се покаже над твоя във избрано място. В зависимост от готовата анимация може да изглежда странно, затова ще е добре да потърсиш повече. Примерно добре би трябвало да изглежда клип с котка която върви примерно от дясно на ляво и след това спира и сяда. В програмата докато котката върви ще анимираш целият клип да се движи от дясно на ляво и реално ще изглежда достатъчно добре, че котката върви върху клипа ти. Надявам се, това е каквото искаш да направиш.
  20. Random Person

    помощ за задача

    Здравей, имаш грешки в логиката и като цяло не си се запознал с двумерните масиви. Ето кода от горният пост с коментари ми: int main() { int m,i,d; int oc = 5; float a[50][50]; /* Препоръка за подобрение: Използвай променливи за дефиниране на масива. Примерно за дефинирането попитай потребителя за броя студенти и съхрани броят във променлива примерно students и след това го декларирай така: a[students][5]; Като за броят оценки може друга променлива. Допълнително, предвид, че (до колкото разбрах) се търси модата на оценките, които са целочислени, няма смисъл двумерният масив да е float. Ако оценките не са цели ще изисква да се направи по-различно, а ти си почнал като за целочислени. */ cout << "Broi na studentite: "; cin >> m; cout << "Vuvedete ocenkite na studentite:"; for (i = 0; i < m; i++){ for (d = 0; d < oc; d++) { cin >> a[i][d]; } } int max_count = 0; for ( i = 0; i < m; i++) { int count = 1; for (d =0; d < oc; d++) //Цикъл през всички оценки, добре до тук. if (a[i] == a[d]) /* Е това условие if няма смисъл. Първият израз на масива ти показва за кой студент е и няма стойност. Сравняваш дали първият студент а[0] e равен на първият а[0] и след това се променя дали а[0] е равно на а[1],2,3... А то реално сравняваш hex защото това ще излезе за а[0] при двумерен масив... Трябва да ти е a[i][d] == a[i][d+1] */ count++; if (count > max_count) max_count = count; } /* Отново същият цикъл по-долу? Но извеждаш "нещото"... По-ясно ще е да съхрянваш модата в отделна променлива. */ for ( i = 0; i < m; i++) { int count = 1; for (d=0; d < oc; d++) if (a[i] == a[d]) count++; if (count == max_count) for (i = 0; i < m; i++) // И този цикъл е за...? Вече си в него... cout << '\t' << i << "-i student: " << a[i] << endl; // както казах, ще излезе hex...Предполагам вместо a[i] трябва да е резултата/модата. } _getch(); } Ето моята редакция на програмата. Надявам се, няма да копираш, поставиш и забравиш. #include<iostream> #include<stdlib.h> #include<conio.h> using namespace std; int main() { int m,i,d; int oc = 5; cout << "Broi na studentite: "; cin >> m; int a[m][oc]; for (i = 0; i < m; i++){ // Съобщението се показва за всеки студент, да се знае кога свършва // въвеждането на оценките за даден студент. cout << "Vuvedete ocenkite na "<< i <<" student:"; for (d = 0; d < oc; d++) { cin >> a[i][d]; } } int max_count = 0; /* Извадил съм декларацията на count от цикъла и съм добавил променливата mode */ int count = 1; int mode = a[0][0]; for ( i = 0; i < m; i++) { max_count = 0; count = 1; mode = a[i][0]; for (d = 0; d < oc; d++) { // Сравнявам сегашната оценка със следващата if ( a[i][d] == a[i][d+1] ) { count++; if ( count > max_count ) { max_count = count; mode = a[i][d]; } } else count = 1; } cout << '\t' << i << "-i student: " << mode << endl; } _getch(); } Успешно показва резултата за всеки студент. Ето примерен резултат на програмата: Broi na studentite: 3 Vuvedete ocenkite na 0 student:2 3 3 4 5 Vuvedete ocenkite na 1 student:6 5 4 2 6 Vuvedete ocenkite na 2 student:5 3 2 2 6 0-i student: 3 1-i student: 6 2-i student: 2 Вече от теб зависи да направиш по-добър интерфейс. Надявам се съм разбрал какво се изисква от задачата. Успех!
  21. Kaкто споменах, "$row = $stmt->fetch(PDO::FETCH_ASSOC)" взима само първият ред и не продължава. fetch() връща един ред, а PDO::FETCH_ASSOC настройва PDO резултата да е под формата на associative array. Реално while работи като if според мен. Ако ще се използва while loop, като гледам документацията има няколко начина да се направи. При PDO::FETCH_ASSOC в while loop не е достатъчно само стойността като условие, както е направено на повечето места, а нещо такова би трябвало да реши проблема: while (($row = $stmt->fetch(PDO::FETCH_ASSOC)) !== false ) { ... Също има вариант за извеждане с scrollable cursor на fetch(). Погледни документацията, която реално на части написах по-горе.
  22. Свикнал съм framework да върши тази мръсна работа, но мисля, че видях проблема. while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $category->id = $row['category_id']; $category->readCategoryName(); С "$row = $stmt->fetch(PDO::FETCH_ASSOC)" не се ли взима един ред от базата данни и след това се показва ? Не виждам как продължава loop... Не трябва ли да е така: $rows = $stmt->fetchAll(); foreach($rows as $row) { $category->id = $row['category_id']; $category->readCategoryName(); ...
  • Разглеждащи това в момента   0 потребители

    • Няма регистрирани потребители разглеждащи тази страница.
×
×
  • Добави ново...

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите Условия за ползване