I'm trying to see if a file contains a string that is sent to the page. I'm not sure what is wrong with this code:
?php $valid = FALSE; $id = $_GET['id']; $file = './uuids.txt'; $handle = fopen($file, "r"); if ($handle) { // Read file line-by-line while (($buffer = fgets($handle)) !== false) { if (strpos($buffer, $id) === false) $valid = TRUE; } } fclose($handle); if($valid) { do stufff }
Much simpler:
<?php if( strpos(file_get_contents("./uuids.txt"),$_GET['id']) !== false) { // do stuff } ?>
In response to comments on memory usage:
<?php if( exec('grep '.escapeshellarg($_GET['id']).' ./uuids.txt')) { // do stuff } ?>
For larger files, this code is more efficient (as it reads line by line, instead of entire file at once).
$handle = fopen('path_to_your_file', 'r'); $valid = false; // init as false while (($buffer = fgets($handle)) !== false) { if (strpos($buffer, $id) !== false) { $valid = TRUE; break; // Once you find the string, you should break out the loop. } } fclose($handle);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With