Scripting

Ramblings and links to interesting snippets


PHP database backup

Tags: , , ,

I recently added in a way for admin users to download a backup of the database to a CMS I work on.  I came up with something between this solution and this one.  Add this little snippet after a database connection and change “table_1” and “table_2” to whichever tables you’d like to output, and add as many tables as you need.

What I like about this script is that it doesn’t save a copy to the server so folks can’t nab it if they know the entire URL, but it can be easily integrated to a web based interface.  It also uses “create table if not exists” which was missing from the other two scripts.  I think a backup should create tables in case you loose the table structure, but it shouldn’t delete the existing data.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
function datadump ($table) {
    $result .= "# Dump of $table \n";
    $result .= "# Dump DATE : " . date("d-M-Y") ."\n\n";
    
    $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
    $result .= "\n\n".str_replace('CREATE TABLE','CREATE TABLE IF NOT EXISTS',$row2[1]).";\n\n";
    
    $query = mysql_query("select * from $table");
    $num_fields = @mysql_num_fields($query);
    $numrow = mysql_num_rows($query);
    
    for ($i =0; $i<$numrow; $i++) {
        while($row = mysql_fetch_row($query)) {
            $result .= "INSERT INTO ".$table." VALUES(";
            for($j=0; $j<$num_fields; $j++) {
                $row[$j] = addslashes($row[$j]);
                $row[$j] = ereg_replace("\n","\\n",$row[$j]);
                
                if (isset($row[$j])) $result .= "\"$row[$j]\"" ; else $result .= "\"\"";
                if ($j<($num_fields-1)) $result .= ",";
            }
            $result .= ");\n";
        }
    }
    return $result . "\n\n\n";
}
 
$content = datadump('table_1').datadump('table_2');
 
$file_name = "database_backup.sql";
Header("Content-type: application/octet-stream");
Header("Content-Disposition: attachment; filename=$file_name");
echo $content;
?>

Permalink » 2 Comments

Twitter Critter

Tags: , , , ,

I recently just finished a project called “Twitter Critter” It’s a simple program that works with Twitter to generate an avatar.  All you have to do is enter in your own username, or anyone’s username, and it will create an avatar based on your Tweets.

It searches through your latest 200 tweets and uses those words to determine what color, critter, and what accessories your Twitter Critter will have.  It also generates a cute bio for that Critter based on those choices.  There are thousands of possible combinations, and if you come back after doing some Tweeting your result will change!  You can also Tweet out a permalink to the specific Twitter Critter your generated, and with one click you can set it as you avatar on Twitter.

Click here to get started!  http://twitter-critter.contropa.com/

Related Blogs:

http://rakugakiman.blog6.fc2.com/blog-entry-2827.html

Permalink » No comments

Spamlists and WordPress

Tags: , , , ,

I’ve been getting dozens of e-mails with spam posts to this blog and it’s become far to annoying to ignore any further!  I’ve been using WordPress’s integrated blacklist tool, but it’s time consuming to maintain and only protects against past threats.  I took a look at the database and I’ve managed to collect over 3,000 spam comments that take up more than 20 mbs of database space…which is quite a lot IMO.

In the past the best prevention I’ve found against spammers is to use spam lists.  One I like in particular is FSpamlist.com.  You have to sign-up to get an API key, but after that using it is very straight forward.   Stop Forum Spam is a big one too, you don’t need an API key to check for spammers so it was even easier to add.  I put a simple WordPress plugin together to integrate the lists with my blog.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
/*
Plugin Name: Spamlist
Plugin URI: http://wannabe.contropa.com/fspamlist-and-wordpress/351/
Description: Uses spamlists to stop spammers
Version: 1.0
Author: Foxumon
Author URI: http://www.contropa.com
License: GPL2
*/
 
add_action('wp_blacklist_check', 'spamlist', 10 , 6);
 
function spamlist($author, $email, $url, $comment, $user_ip, $user_agent) {
    $username = $author;
    $email = $email;
    //$ip = $user_ip;
    
    $fspamcheck = file_get_contents('http://www.fspamlist.com/xml.php?key=######&spammer='.$email.','.$username.','.$ip);
    if (strpos($fspamcheck, '<isspammer>true</isspammer>') !== FALSE) {
        wp_die('Your e-mail address has been marked as spam.  You may request that it be removed here: http://www.temerc.com/forums/viewforum.php?f=72','spam');
    }
    
    $fspamcheck = file_get_contents('http://www.stopforumspam.com/api?email='.$email.'&username='.$username);
    if (strpos($fspamcheck, '<appears>yes</appears>') !== FALSE) {
        wp_die('Your e-mail address has been marked as spam.  You may request that it be removed here: http://stopforumspam.com/removal','spam');
    }
}
?>

I’m currently not planning on submitting it to the WordPress plugins directory or anything like that, but you want to try it out too you just save the code as “spamlist.php” add it to a “spamlist” folder in your plug-ins directory and then it ought to show up in your admin where you can active it.

It’s currently not set to report the spam that it blocks in any way…I’m not sure if I want it to or not.  I’m currently looking at over 3k of spam comments that are just sitting around taking up room in my database, but at the same time I don’t want to get any legitimate posters blocked without anyway of knowing.  Anyways, I’m going to test it out for now and see how it goes 🙂

Permalink » No comments

Spam Words

Tags: , ,

This is a very simple spam prevention mod for phpBB2.  The idea is that you define specific words that come up often in spam and it will block messages containing those words.

There is already a “spam words” mod out there, but with this mod you don’t need to make any database changes and you can set how many times the words need to be matched before blocking the message as spam.  Although, there isn’t an admin panel to go with this mod so settings need to be changed in the code.

Features:

  • Checks if a post includes any designated spam words
  • Set how many times those words need to be found to mark as spam
  • Set how many posts a user needs to have their post checked
  • PM a designated account with details about the post

Click here to download the mod

Permalink » No comments