Log In · Register

 
A bit stuck, again
Mikeplyts
post Jan 14 2010, 09:05 PM
Post #1


Mel Blanc was allergic to carrots.
*******

Group: Official Designer
Posts: 6,371
Joined: Aug 2008
Member No: 676,291



Hrm, well, I'm setting up a little administrator account privileges and all for my new project, and I have a page for where I can delete users, but, it's not exactly turning out too well. What I have is a while() loop that displays each username and a "clean" version of it for a query string in the URL. So, I was wondering, how could I execute some certain code based on a query string URL that is put in a while() loop?

Here's the code:
CODE
<?php
if (isset($_GET['delete'])) {
$delete = $_GET['delete'];
}

if (!$delete) {
// Set Parameters
$database['server'] = 'localhost';
$database['username'] = 'username';
$database['password'] = 'password';
$database['name'] = 'database';

// Connect to MySQL Database
$connection = mysql_connect($database['server'], $database['username'], $database['password']);
mysql_select_db($database['name'], $connection);

// Get Usernames
$result = mysql_query("SELECT username FROM users");
$number = mysql_num_rows($result);
$i = 0;

echo '<ul>';

while ($i < $number) {
$username = mysql_result($result, $i, 'username');
$clean_username = strtolower($username);
echo '
<li><a href="users?delete=' . $clean_username . '">' . $username . '</a></li>';
$i++;
}

echo '
</ul>
<br />
';
}

else if ($delete == $clean_username) {
mysql_query("DELETE FROM users WHERE username = '$username'");
header ('Location: ' . root . '/account/admin/delete/users');
}

else {
header ('Location: ' . root . '/account/admin/delete/users');
}
?>


mellow.gif

I have a feeling it could be a very quick fix. :\
 
 
Start new topic
Replies
mipadi
post Jan 14 2010, 10:10 PM
Post #2


Senior Member
******

Group: Administrator
Posts: 2,648
Joined: Apr 2008
Member No: 639,265



Well, first of all, in general you probably shouldn't delete users based on a GET request -- you should use a POST parameter. This is because a URL can be reached from, e.g., a search spider. Imagine if a search spider follows a link to a delete URL, then, poof! user is deleted. I'm speaking from personal experience, for I did something like this back when I was a web developer, and it was a bad thing. In your case it probably won't matter, since your URLs are password-protected (presumably) so a crawler can't reach them anyway, but it's better to get into the habit of using POSTs for destructive operations (deletes, edits, and so forth).

Secondly, I wouldn't use the "clean" username as a delete parameter, I'd use the user ID since it's less ambiguous.

Anyway, here's a bit of code. Is this what you were looking for?

CODE

<?php
if (!isset($_GET['delete'])) {
// Set Parameters
$database['server'] = 'localhost';
$database['username'] = 'username';
$database['password'] = 'password';
$database['name'] = 'database';

// Connect to MySQL Database
$connection = mysql_connect($database['server'], $database['username'], $database['password']);
mysql_select_db($database['name'], $connection);

// Get Usernames
$result = mysql_query("SELECT username, id FROM users");
$number = mysql_num_rows($result);

echo '<ul>';

for ($i = 0; $i < $number, $i++) {
$username = mysql_result($result, $i, 'username');
$id = mysql_result($result, $i, 'id');
echo '
<li><a href="users?delete=' . $id . '">' . $username . '</a></li>';
$i++;
}

echo '
</ul>
<br />
';
} else {
// Should probably ask for confirmation before deleting
$id = $_GET['delete']
mysql_query("DELETE FROM users WHERE id = $id");
header ('Location: ' . root . '/account/admin/delete/users');
}
?>
 

Posts in this topic


Closed TopicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members: