<?php $filename = 'whitelist.txt'; if (isset($_POST['uname'])) { $uname = $_POST['uname']; file_put_contents($filename, '{"'.$uname.'"}'); if (empty($uname)) { header("Location: generator.php?error=No Empty Username"); exit(); } }else{ header("Location: generator.php"); exit(); }
The expected output should be:
{“User1”, “User2”}
But it is:
{“User1”}
I just wanna make a whitelist user by using a form so he can get whitelisted, I hope someone can help! Thank you!
Advertisement
Answer
To make a user blacklist you’ll need to use some database and authentication otherwise you’ll end up with problems in a case where like user1 and user2 have the same data
But for your question.
One way is to replace the last character every time
here is how…
replace the file_put_con...
line with this
$existing = file_get_contents($filename); if(strpos($existing,"}")){ //check if at least one username exists $newcontent = str_replace('}',',"'.$uname.'"}',$existing); //replace old data with new file_put_contents($filename,$newcontent); } else { // incase there is no username at all $newcontent = '{"'.$uname.'"}'; file_put_contents($filename,$newcontent); }
You’ll obviously corrupt the data if you enter } in the uname
So prevent that by using entities or prevent the } character from being accepted