Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I was interested in using this code, but upon quick review, I noticed that there was insufficient protection against SQL and JSON injection. So I made a quick PR to fix the issues.
Brief summary: is_numeric isn't a defense against SQL injection, as an attacker can encode their injection as a hexadecimal number instead of ascii text - and it will pass is_numeric, but be decoded by the sql server before execution. The solution is just to cast it to an integer, which isn't large enough to hold a dangerous pile of SQL
The JSON injection comes from the fact that you were taking unsanitized data (messages containing things like usernames), and then just concatenating strings to make the curl query. This could have unexpected/dangerous results, so instead of concatenating strings, I build a PHP object and let php safely convert that to json, with all the proper escaping.