Make PhpStorm Look Beautiful & Clean in 10 Minutes ✨
https://youtu.be/khWprU8Xvmg
https://redd.it/1lup0dv
@r_php
https://youtu.be/khWprU8Xvmg
https://redd.it/1lup0dv
@r_php
YouTube
Make PhpStorm Look Beautiful & Clean in 10 Minutes 😍
Transform your PhpStorm from cluttered to clean! 🎨 In this quick guide, I'll show you exactly how to turn the default PhpStorm interface into a modern, distraction-free coding environment; clean & beautiful!
Laravel Serializable Closure: serialize the unserializable
https://youtu.be/SvSxH-iPpOc
https://redd.it/1lutns7
@r_php
https://youtu.be/SvSxH-iPpOc
https://redd.it/1lutns7
@r_php
YouTube
Laravel Serializable Closure: serialize the unserializable
PHP doesn’t let you serialize closures, but Laravel does, thanks to an underrated package that’s built into the framework. I show you exactly how Laravel serializable-closure works, how Laravel uses it internally, and how you can use it safely (and securely!)…
Action Pattern in Laravel: Concept, Benefits, Best Practices
https://nabilhassen.com/action-pattern-in-laravel-concept-benefits-best-practices
https://redd.it/1luvbnw
@r_php
https://nabilhassen.com/action-pattern-in-laravel-concept-benefits-best-practices
https://redd.it/1luvbnw
@r_php
Nabilhassen
Action Pattern in Laravel: Concept, Benefits, Best Practices
The Laravel Action Pattern organizes business logic into reusable, testable classes. It enables context-independent actions for maintainable code.
Laravel Livewire + FrankenPHP + Mercure Demo
I built a quick demo using Laravel Livewire, FrankenPHP, and Mercure
Repo: https://github.com/besrabasant/frakenphp-demo
https://redd.it/1lv9d75
@r_php
I built a quick demo using Laravel Livewire, FrankenPHP, and Mercure
Repo: https://github.com/besrabasant/frakenphp-demo
https://redd.it/1lv9d75
@r_php
GitHub
GitHub - besrabasant/frakenphp-demo
Contribute to besrabasant/frakenphp-demo development by creating an account on GitHub.
Laravel Livewire + FrankenPHP + Mercure Demo
I built a quick demo using Laravel Livewire, FrankenPHP, and Mercure
Repo: https://github.com/besrabasant/frakenphp-demo
https://redd.it/1lv9e8h
@r_php
I built a quick demo using Laravel Livewire, FrankenPHP, and Mercure
Repo: https://github.com/besrabasant/frakenphp-demo
https://redd.it/1lv9e8h
@r_php
GitHub
GitHub - besrabasant/frakenphp-demo
Contribute to besrabasant/frakenphp-demo development by creating an account on GitHub.
Another recount on breaking into a retired PHP app (RainLoop) using textbook vulnerabilities (unserialize, not checking file paths, etc.).
Unlike the other time, it seems there is no English text available, so just a short recount by yours truly.
Although RainLoop web-mail client looks extremely dated, and its Github repo is in the archived state, it was listed as an obscure web-mail option by a Beget cloud platform, and hence was eligible for their bug bounty program. So a bug hunter nicknamed hunter decided to dig in.
And so how it went:
`+` unserializse, fed by cookie input in RainLoop\Utils::DecodeKeyValuesQ()
`+` curl is fed by invalidated user-supplied data allowing file:// scheme in RainLoop\Actions\DoComposeUploadExternals()
`+` attached files are not checked for validity, hence
create a new mail with an arbitrary attach file
save it as a Draft and check the HTTP request
modify it so the attachment becomes file:///var/www/html/data/SALT.php (it's unclear how the path was discovered but it's doable, like via guesswork or relative path)
check whatever attachment hash returned by the system
use that hash to forge a request for attachment
bingo, we have SALT.php attached.
Now the story goes on creating the executable payload. The list of used libraries were examined and Predis was targeted, starting from destructor method in \Predis\Response\Iterator\MultiBulkTuple(), resulting in POC code. And then, once MultiBulkTuple's desctuctor is called, Predis/Command/Processor/KeyPrefixProcessor.php would execute calluserfunc() with a command stored in DispatcherLoop::$callbacks and payload DispatcherLoop::$pubsub and the simplest command would be
Also there was a note that all this long way was really unnecessary as it turned out that gopher:// based SSRF could have directly manipulated php-fpm service. Though I am not sure how exactly it could be done, but would like to learn.
From this story I learned about file:// and gother:// protocols supported by curl, the latter being effectively a telnet client which can be used to connect any TCP service by asking curl to open a gother:://service:port/payload URL.
https://redd.it/1lvftxe
@r_php
Unlike the other time, it seems there is no English text available, so just a short recount by yours truly.
Although RainLoop web-mail client looks extremely dated, and its Github repo is in the archived state, it was listed as an obscure web-mail option by a Beget cloud platform, and hence was eligible for their bug bounty program. So a bug hunter nicknamed hunter decided to dig in.
And so how it went:
`+` unserializse, fed by cookie input in RainLoop\Utils::DecodeKeyValuesQ()
- that input is encrypted with a long key stored in SALT.php`+` curl is fed by invalidated user-supplied data allowing file:// scheme in RainLoop\Actions\DoComposeUploadExternals()
- there is no direct way to get the output`+` attached files are not checked for validity, hence
create a new mail with an arbitrary attach file
save it as a Draft and check the HTTP request
modify it so the attachment becomes file:///var/www/html/data/SALT.php (it's unclear how the path was discovered but it's doable, like via guesswork or relative path)
check whatever attachment hash returned by the system
use that hash to forge a request for attachment
bingo, we have SALT.php attached.
+ now we can create a payload for unserialize and encrypt it using the actual keyNow the story goes on creating the executable payload. The list of used libraries were examined and Predis was targeted, starting from destructor method in \Predis\Response\Iterator\MultiBulkTuple(), resulting in POC code. And then, once MultiBulkTuple's desctuctor is called, Predis/Command/Processor/KeyPrefixProcessor.php would execute calluserfunc() with a command stored in DispatcherLoop::$callbacks and payload DispatcherLoop::$pubsub and the simplest command would be
system with whatever shell command you can imagine. Also there was a note that all this long way was really unnecessary as it turned out that gopher:// based SSRF could have directly manipulated php-fpm service. Though I am not sure how exactly it could be done, but would like to learn.
From this story I learned about file:// and gother:// protocols supported by curl, the latter being effectively a telnet client which can be used to connect any TCP service by asking curl to open a gother:://service:port/payload URL.
https://redd.it/1lvftxe
@r_php
Reddit
From the PHP community on Reddit: A fantastic recount on breaking a PHP app using several textbook vulnerabilities like error reporting…
Explore this post and more from the PHP community
Need to upgrade PHP on XAMPP for Linux
Hi,
I installed XAMPP on Ubuntu Server 24.04. It comes with php 8.2.12. I need to upgrade it to 8.3.6 or later.
I tried different guides and solutions found on forums but nothing works, it also corrupted previous data saved on XAMPP folder. Has anyone had my same problem??
https://redd.it/1lvke47
@r_php
Hi,
I installed XAMPP on Ubuntu Server 24.04. It comes with php 8.2.12. I need to upgrade it to 8.3.6 or later.
I tried different guides and solutions found on forums but nothing works, it also corrupted previous data saved on XAMPP folder. Has anyone had my same problem??
https://redd.it/1lvke47
@r_php
Reddit
From the PHP community on Reddit
Explore this post and more from the PHP community
Strange issue when trying to run commands via app
I have a strange issue, i want to execute symfony commands via app, i followed the suggestion from:
https://symfony.com/doc/current/console/command\_in\_controller.html
public function execute(CommandInterface $command): string
{
$input = new ArrayInput($command->getParameter());
$output = new BufferedOutput();
$application = new Application($this->kernel);
$application->setAutoExit(false);
$application->run($input, $output);
$converter = new AnsiToHtmlConverter();
$content = $output->fetch();
return $converter->convert($content);
}
And a relative vanilla command:
readonly class ExtractTranslationsCommand implements CommandInterface
{
public function construct(private string $locale)
{
//
}
public function getCommand(): string
{
return 'translation:extract';
}
public function getParameter(): array
{
return
'command' => $this->getCommand(),
'--format' => 'php',
'--force' => null,
$this->locale => $this->locale,
;
}
}
And i get:
Error thrown while running command "translation:extract --format=php --force en". Message: "The "en" argument does not exist."
If i run the command in the console it works fine.
if i change the last parameter from
Uncaught PHP Exception TypeError: "Symfony\Component\Console\Input\Input::escapeToken(): Argument #1 ($token) must be of type string, null given, called in /var/www/html/vendor/symfony/console/Input/ArrayInput.php on line 107" at Input.php line 154
Does anything sees an issue that might cause the errors, i mean the copy paste it it does work
translation:extract --format=php --force en
https://redd.it/1lvo7nc
@r_php
I have a strange issue, i want to execute symfony commands via app, i followed the suggestion from:
https://symfony.com/doc/current/console/command\_in\_controller.html
public function execute(CommandInterface $command): string
{
$input = new ArrayInput($command->getParameter());
$output = new BufferedOutput();
$application = new Application($this->kernel);
$application->setAutoExit(false);
$application->run($input, $output);
$converter = new AnsiToHtmlConverter();
$content = $output->fetch();
return $converter->convert($content);
}
And a relative vanilla command:
readonly class ExtractTranslationsCommand implements CommandInterface
{
public function construct(private string $locale)
{
//
}
public function getCommand(): string
{
return 'translation:extract';
}
public function getParameter(): array
{
return
'command' => $this->getCommand(),
'--format' => 'php',
'--force' => null,
$this->locale => $this->locale,
;
}
}
And i get:
Error thrown while running command "translation:extract --format=php --force en". Message: "The "en" argument does not exist."
If i run the command in the console it works fine.
if i change the last parameter from
$this->locale => $this->locale to $this->locale => null it is also not working with the error:Uncaught PHP Exception TypeError: "Symfony\Component\Console\Input\Input::escapeToken(): Argument #1 ($token) must be of type string, null given, called in /var/www/html/vendor/symfony/console/Input/ArrayInput.php on line 107" at Input.php line 154
Does anything sees an issue that might cause the errors, i mean the copy paste it it does work
translation:extract --format=php --force en
https://redd.it/1lvo7nc
@r_php
Symfony
How to Call a Command from a Controller (Symfony Docs)
The Console component documentation covers how to create a console command. This article covers how to use a console command directly from your controller. You may have the need to call some function …
L12 starter kit (Inertia/Vue) and persistent layout
Has anybody tried to implement persistent layout on the inertia+Vue starter kit?
I'm using the sidebar version, and I would like for the app not reload the layout each time and lose the opened sidebar item. And also I have to implement a chat component that has to live on the layout
I don't think it's possible to pass props (ie the breadcrumbs) from each page to the AppLayout?
https://redd.it/1lvx3he
@r_php
Has anybody tried to implement persistent layout on the inertia+Vue starter kit?
I'm using the sidebar version, and I would like for the app not reload the layout each time and lose the opened sidebar item. And also I have to implement a chat component that has to live on the layout
I don't think it's possible to pass props (ie the breadcrumbs) from each page to the AppLayout?
https://redd.it/1lvx3he
@r_php
Inertia.js Documentation
Pages - Inertia.js Documentation
Refreshing a Livewire component after closing a Flux modal.
I currently have two Livewire components, one called PatientDetails, and another PatientForm. PatientDetails is the main component, while PatientForm opens up in a FluxUI modal. At the end of the save() function in PatientForm (which either creates or updates a Patient record), I have the following:
Flux::toast($message, heading: 'Success', variant: 'success', position: 'top-right');
Flux::modal("patient-form-{$this->patient->id }")->close();
What I would like to then do is refresh the underlying PatientDetails component, so whatever has been updated can refresh. How can I go about doing this?
https://redd.it/1lw4m56
@r_php
I currently have two Livewire components, one called PatientDetails, and another PatientForm. PatientDetails is the main component, while PatientForm opens up in a FluxUI modal. At the end of the save() function in PatientForm (which either creates or updates a Patient record), I have the following:
Flux::toast($message, heading: 'Success', variant: 'success', position: 'top-right');
Flux::modal("patient-form-{$this->patient->id }")->close();
What I would like to then do is refresh the underlying PatientDetails component, so whatever has been updated can refresh. How can I go about doing this?
https://redd.it/1lw4m56
@r_php
Reddit
From the laravel community on Reddit
Explore this post and more from the laravel community
🔥 Profiling in PHP with excimer and how to export the data 🚀
> The post is by Oleg Mifle, author of excimetry.
I want to share how to export profiling data collected using excimer. Now, excimer isn’t the most popular profiling module — and I think that’s unfair. It’s tightly integrated into PHP and has minimal CPU overhead ⚡
Any downsides? Of course — it lacks built-in visualization. But there are plenty of visualizers out there: Pyroscope from Grafana, for example. Or Speedscope. The real problem is — how to send the data there, since excimer doesn’t support OpenTelemetry or any common format out of the box.
So what to do?
Well… write a wrapper and adapters yourself 😎 That’s exactly what I did. And that’s how the open source package excimetry was born 👩💻 - https://github.com/excimetry/excimetry
Personally, I find it really convenient. I’ve added native integration with OpenTelemetry clients, sending binary data using protobuf.
It currently supports:
- ✅ Pyroscope
- ✅ Speedscope
- ✅ File export
- ✅ CLI command profiling
Here’s an example:
Honestly, I don’t know how far this will go — but I genuinely like the idea 💡 Maybe excimer will get just a little more attention thanks to excimetry.
Would love to get your ⭐️ on GitHub, reposts, and feedback ❤️
https://redd.it/1lw6kej
@r_php
> The post is by Oleg Mifle, author of excimetry.
I want to share how to export profiling data collected using excimer. Now, excimer isn’t the most popular profiling module — and I think that’s unfair. It’s tightly integrated into PHP and has minimal CPU overhead ⚡
Any downsides? Of course — it lacks built-in visualization. But there are plenty of visualizers out there: Pyroscope from Grafana, for example. Or Speedscope. The real problem is — how to send the data there, since excimer doesn’t support OpenTelemetry or any common format out of the box.
So what to do?
Well… write a wrapper and adapters yourself 😎 That’s exactly what I did. And that’s how the open source package excimetry was born 👩💻 - https://github.com/excimetry/excimetry
Personally, I find it really convenient. I’ve added native integration with OpenTelemetry clients, sending binary data using protobuf.
It currently supports:
- ✅ Pyroscope
- ✅ Speedscope
- ✅ File export
- ✅ CLI command profiling
Here’s an example:
use Excimetry\Profiler\ExcimerProfiler;
use Excimetry\Exporter\CollapsedExporter;
use Excimetry\Backend\PyroscopeBackend;
// Create a profiler $profiler = new ExcimerProfiler();
// Start profiling $profiler->start();
// Your code to profile here // ...
// Stop profiling $profiler->stop();
// Get the profile $log = $profiler->getLog();
// Send to Pyroscope
$exporter = new CollapsedExporter();
$backend = new PyroscopeBackend(
serverUrl: 'http://localhost:4040',
appName: 'my-application',
labels: ['env' => 'production'],
exporter: $exporter,
);
// Send the profile to Pyroscope $backend->send($log);
// You can also set the backend to send asynchronously
$backend->setAsync(true);
$backend->send($log); // Returns immediately, sends in background
// Add custom labels
$backend->addLabel('version', '1.0.0');
$backend->addLabel('region', 'us-west');
Honestly, I don’t know how far this will go — but I genuinely like the idea 💡 Maybe excimer will get just a little more attention thanks to excimetry.
Would love to get your ⭐️ on GitHub, reposts, and feedback ❤️
https://redd.it/1lw6kej
@r_php
GitHub
GitHub - excimetry/excimetry: Excimetry is a PHP profiling library that provides a bridge between the ext-excimer extension and…
Excimetry is a PHP profiling library that provides a bridge between the ext-excimer extension and various profiling tools and platforms. - GitHub - excimetry/excimetry: Excimetry is a PHP profilin...
shipmonk/phpstan-ignore-inliner: Inline your PHPStan error ignores into the source files via @phpstan-ignore comments!
https://github.com/shipmonk-rnd/phpstan-ignore-inliner
https://redd.it/1lwe1yf
@r_php
https://github.com/shipmonk-rnd/phpstan-ignore-inliner
https://redd.it/1lwe1yf
@r_php
GitHub
GitHub - shipmonk-rnd/phpstan-ignore-inliner: Inline your PHPStan error ignores into the source files via @phpstan-ignore comments.
Inline your PHPStan error ignores into the source files via @phpstan-ignore comments. - shipmonk-rnd/phpstan-ignore-inliner
Filter Laravel model using URL query strings
Hi r/PHP 👋
I've built a Laravel package to filter Eloquent models using URL query strings. I know there's a plethora of packages that solve this problem, but I haven't found a single one that uses this specific approach. Let me know what you think!
The package is [goodcat/laravel-querystring](https://github.com/goodcat-dev/laravel-querystring). I'm using the attribute `#[QueryString]` to tag a method as a "filter" and the Reflection API to map the query string name to the filter. Here's an example:
// http://example.com/users?email=john@doe.com
class User extends Authenticatable
{
use UseQueryString;
#[QueryString('email')]
public function filterByEmail(Builder $query, string $search): void
{
$query->where('email', $search);
}
}
I’ve added the `UseQueryString` trait to the `User` model and marked a method with the `QueryString` attribute.
class UserController extends Controller
{
public function index(Request $request): View
{
$users = User::query()->queryString($request)->get();
return view('user.index', ['users' => $users]);
}
}
Inside the query, I use the `queryString($request)` scope, passing it the request. The query string is automatically mapped to the method, and the filter we wrote earlier is applied. I like this approach because:
* No restriction on query string names, use whatever name you like.
* No pre-defined filters, you explicitly write each filter method.
* It leverages modern PHP with Attributes, caching, and the Reflection API.
I'm really curious to know what you think! 😼 I wrote an [article on Medium](https://medium.com/@outlaw.plz/filter-laravel-models-using-url-query-strings-45f3683d7cbe) to delve deeper into the motivations that led me to write this package. If I’ve piqued your curiosity, check out the code on GitHub: [goodcat/laravel-querystring](https://github.com/goodcat-dev/laravel-querystring).
https://redd.it/1lwgpif
@r_php
Hi r/PHP 👋
I've built a Laravel package to filter Eloquent models using URL query strings. I know there's a plethora of packages that solve this problem, but I haven't found a single one that uses this specific approach. Let me know what you think!
The package is [goodcat/laravel-querystring](https://github.com/goodcat-dev/laravel-querystring). I'm using the attribute `#[QueryString]` to tag a method as a "filter" and the Reflection API to map the query string name to the filter. Here's an example:
// http://example.com/users?email=john@doe.com
class User extends Authenticatable
{
use UseQueryString;
#[QueryString('email')]
public function filterByEmail(Builder $query, string $search): void
{
$query->where('email', $search);
}
}
I’ve added the `UseQueryString` trait to the `User` model and marked a method with the `QueryString` attribute.
class UserController extends Controller
{
public function index(Request $request): View
{
$users = User::query()->queryString($request)->get();
return view('user.index', ['users' => $users]);
}
}
Inside the query, I use the `queryString($request)` scope, passing it the request. The query string is automatically mapped to the method, and the filter we wrote earlier is applied. I like this approach because:
* No restriction on query string names, use whatever name you like.
* No pre-defined filters, you explicitly write each filter method.
* It leverages modern PHP with Attributes, caching, and the Reflection API.
I'm really curious to know what you think! 😼 I wrote an [article on Medium](https://medium.com/@outlaw.plz/filter-laravel-models-using-url-query-strings-45f3683d7cbe) to delve deeper into the motivations that led me to write this package. If I’ve piqued your curiosity, check out the code on GitHub: [goodcat/laravel-querystring](https://github.com/goodcat-dev/laravel-querystring).
https://redd.it/1lwgpif
@r_php
GitHub
GitHub - goodcat-dev/laravel-querystring: A Laravel package to filter Eloquent models using query string parameters.
A Laravel package to filter Eloquent models using query string parameters. - goodcat-dev/laravel-querystring
NativePHP for Mobile v1.1: >50% Size Reduction, Faster Builds + Geo. Splash. Secure Store and lots more!
https://laravel-news.com/nativephp-for-mobile-v11
https://redd.it/1lwhm23
@r_php
https://laravel-news.com/nativephp-for-mobile-v11
https://redd.it/1lwhm23
@r_php
Laravel News
NativePHP for Mobile v1.1: Smaller, Smarter, and Ready to Scale - Laravel News
Version 1.1 of NativePHP drops Monday, July 14, and it isn’t just a collection of fixes. It’s a foundational upgrade designed to make NativePHP apps easier to build, faster to ship, and ready for real production work — all using Laravel.
PHP Redis Session Manager - Compatible with Websockets
Github:
https://github.com/jeankassio/PHP-Redis-Session-Manager
I needed to work once again with websockets and again I came across the problem of getting sessions correctly within a websocket, so I decided to create this library to help me, for anyone who has to work with websockets, it may be useful to you too
https://redd.it/1lwfeis
@r_php
Github:
https://github.com/jeankassio/PHP-Redis-Session-Manager
I needed to work once again with websockets and again I came across the problem of getting sessions correctly within a websocket, so I decided to create this library to help me, for anyone who has to work with websockets, it may be useful to you too
https://redd.it/1lwfeis
@r_php
GitHub
GitHub - jeankassio/PHP-Redis-Session-Manager: A simple and flexible PHP library for managing sessions using Redis, compatible…
A simple and flexible PHP library for managing sessions using Redis, compatible with both standard HTTP pages and WebSocket servers. - jeankassio/PHP-Redis-Session-Manager
Exploiting public APP_KEY leaks to achieve remote code execution in hundreds of Laravel applications
https://blog.gitguardian.com/exploiting-public-app_key-leaks/
https://redd.it/1lwh1ub
@r_php
https://blog.gitguardian.com/exploiting-public-app_key-leaks/
https://redd.it/1lwh1ub
@r_php
GitGuardian Blog - Take Control of Your Secrets Security
Exploiting Public APP_KEY Leaks to Achieve RCE in Hundreds of Laravel Applications
Laravel APP_KEY leaks enable RCE via deserialization attacks. Collaboration with Synacktiv scaled findings to 600 vulnerable applications using 260K exposed keys from GitHub. Analysis reveals 35% of exposures coincide with other critical secrets including…
[Release] phpfmt v0.1.0 – code formatter for PHP written in Go
https://github.com/mibk/phpfmt/releases/tag/v0.1.0
https://redd.it/1lwmm0j
@r_php
https://github.com/mibk/phpfmt/releases/tag/v0.1.0
https://redd.it/1lwmm0j
@r_php
GitHub
Release phpfmt v0.1.0 — First Public Beta 🎉 · mibk/phpfmt
Overview
After ten years of gradual evolution—and an especially intense sprint over the past few months—we’re thrilled to tag v0.1.0. This is the first public, versioned snapshot of a project that ...
After ten years of gradual evolution—and an especially intense sprint over the past few months—we’re thrilled to tag v0.1.0. This is the first public, versioned snapshot of a project that ...
Storing mysqli db user and password settings on Front End Server PHP in 2025
Hi,
I saw some php code that is being currently used at the company I am currently working at, it has the hostname, port, user and password to connect to a mysqli instance everything stored in a file with a .php extension. The front end server is directly connecting to the database to perform some read operations (running select statements based on what the user enters).
I came across this old stackoverflow post discussing the same (https://stackoverflow.com/questions/47479857/mysqli-connection-db-user-and-password-settings) and it is discussed as it is generally safe.
But what I have learnt is that it is never safe to store username and password on a front end server even if everything is internal (principal of least privilege). Can you please help me figuring out whether this can be used in 2025?, as I am being asked to create something similar to the old application, and I just want to cover my back if something goes wrong (I have never worked with PHP so was shocked)
Thanks for the help.
https://redd.it/1lwnbs4
@r_php
Hi,
I saw some php code that is being currently used at the company I am currently working at, it has the hostname, port, user and password to connect to a mysqli instance everything stored in a file with a .php extension. The front end server is directly connecting to the database to perform some read operations (running select statements based on what the user enters).
I came across this old stackoverflow post discussing the same (https://stackoverflow.com/questions/47479857/mysqli-connection-db-user-and-password-settings) and it is discussed as it is generally safe.
But what I have learnt is that it is never safe to store username and password on a front end server even if everything is internal (principal of least privilege). Can you please help me figuring out whether this can be used in 2025?, as I am being asked to create something similar to the old application, and I just want to cover my back if something goes wrong (I have never worked with PHP so was shocked)
Thanks for the help.
https://redd.it/1lwnbs4
@r_php
Stack Overflow
mysqli connection db user and password settings
i am trying to figure out if there is a way to make a password recovery system that actually hides the "connection.php" with all the mysqli db username and password. is this possible?
most of the
most of the