Skip to content
Advertisement

whitelist user using file_put_contents forms

<?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

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement