Author |
Topic |
Carefree
Advanced Member
Philippines
4207 Posts |
Posted - 01 September 2013 : 00:54:10
|
I wrote this in response to a problem with double posting, thanks to a suggestion by PierreTopping. Basically, this mod adds a checksum value to topics and replies. When a post is made, it compares the checksum values of previous posts by the same member within the last 10 days. If it finds a match, the post is not made. Get your copy at SnitzBitz.
Note: The original CRC calculation was created by someone else, but the claimed "copyright" allows incorporation for free into existing code; provided the code is not listed on a website. |
Edited by - Carefree on 01 September 2013 00:55:05 |
|
HuwR
Forum Admin
United Kingdom
20584 Posts |
Posted - 02 September 2013 : 05:12:28
|
quote: Note: The original CRC calculation was created by someone else, but the claimed "copyright" allows incorporation for free into existing code; provided the code is not listed on a website.
Could you not have just used the forums SHA256 function to do this ? |
MVC .net dev/test site | MVC .net running on Raspberry Pi |
|
|
Carefree
Advanced Member
Philippines
4207 Posts |
Posted - 02 September 2013 : 07:19:15
|
Sure, but we'd end up with another long encrypted text area field. This field is only 255 characters and will probably never exceed 15. |
|
|
HuwR
Forum Admin
United Kingdom
20584 Posts |
Posted - 02 September 2013 : 07:43:14
|
A sha256 is 256 bits long -- as its name indicates.
If you are using an hexadecimal representation, each digit codes for 4 bits ; so you need 64 digits to represent 256 bits -- so, you need a varchar(64), or a char(64), as the length is always the same, not varying at all.
|
MVC .net dev/test site | MVC .net running on Raspberry Pi |
|
|
Carefree
Advanced Member
Philippines
4207 Posts |
Posted - 02 September 2013 : 09:26:45
|
The longest checksum I've been able to create was 10 characters; even with a post of over 15000 characters. Switching it to sha256 would eliminate any potential copyright issue, so should probably do so if it will be incorporated into base code in the future. |
|
|
HuwR
Forum Admin
United Kingdom
20584 Posts |
Posted - 02 September 2013 : 09:50:46
|
as long as the CRC code copyright allows us to use it, it shouldn't be a problem, just wondered why you didn't use the sha256 function that was all, but definitely better to store 10 rather than 64 chars, possibly worth changing the dbs script to create a smaller field though if you don't think it will need 255. |
MVC .net dev/test site | MVC .net running on Raspberry Pi |
|
|
ruirib
Snitz Forums Admin
Portugal
26364 Posts |
Posted - 03 September 2013 : 05:13:05
|
Another suggestion, Carefree, if you don't mind.
In both SELECT statements for retrieving topics and replies to test, you are using SELECT *, but then you only use the T_CHKSUM and the R_CHKSUM fields. SELECT * is an horrible statement, performance wise, so I would just use the specific fields in those two statements. |
Snitz 3.4 Readme | Like the support? Support Snitz too |
|
|
Carefree
Advanced Member
Philippines
4207 Posts |
Posted - 03 September 2013 : 07:55:39
|
No problem. Easy to change. Done and updated. |
Edited by - Carefree on 03 September 2013 08:19:07 |
|
|
Webbo
Average Member
United Kingdom
982 Posts |
Posted - 03 September 2013 : 16:43:35
|
Is there any chance you can post the changes above to this thread for those that have already implemented it ?
|
|
|
Carefree
Advanced Member
Philippines
4207 Posts |
Posted - 03 September 2013 : 20:45:47
|
Sure. Implementing the change to the field size, though, would require you to rerun a dbs file.
"post_info.asp"
"dbs_chksum_fieldsize.asp"
|
Edited by - Carefree on 03 September 2013 20:46:38 |
|
|
Webbo
Average Member
United Kingdom
982 Posts |
Posted - 04 September 2013 : 02:35:52
|
The dbs file returns errors with a MySql database Carefree....
quote:
Adding Column T_CHKSUM... ALTER TABLE FORUM_TOPICS ALTER COLUMN T_CHKSUM varchar(16) NULL ALTER TABLE FORUM_TOPICS ALTER COLUMN T_CHKSUM varchar(16) NULL -2147217900 | [MySQL][ODBC 5.1 Driver][mysqld-5.1.56-community]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar(16) NULL' at line 1
--------------------------------------------------------------------------------
Adding Column R_CHKSUM... ALTER TABLE FORUM_REPLY ALTER COLUMN R_CHKSUM varchar(16) NULL ALTER TABLE FORUM_REPLY ALTER COLUMN R_CHKSUM varchar(16) NULL -2147217900 | [MySQL][ODBC 5.1 Driver][mysqld-5.1.56-community]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar(16) NULL' at line 1
|
|
|
Carefree
Advanced Member
Philippines
4207 Posts |
Posted - 04 September 2013 : 03:02:42
|
Should probably use mySql's "modify" command. Try this for MySQL:
|
|
|
Webbo
Average Member
United Kingdom
982 Posts |
Posted - 04 September 2013 : 13:18:31
|
That created a table doesn't exist error, however the following worked
|
|
|
HuwR
Forum Admin
United Kingdom
20584 Posts |
Posted - 04 September 2013 : 15:53:47
|
check what you have against the code carefree posted, they are nothing like each other, you seem to have the TABLE (TOPICS) line missing and have the tablename added to the column line |
MVC .net dev/test site | MVC .net running on Raspberry Pi |
|
|
Webbo
Average Member
United Kingdom
982 Posts |
Posted - 04 September 2013 : 16:11:04
|
Carefree's code returned the following:
My version did ..... er, nothing |
|
|
Webbo
Average Member
United Kingdom
982 Posts |
Posted - 04 September 2013 : 16:18:15
|
(For information) As well as the Android O/S the duplicate posts issue is also being caused when people use Google Chrome as their browser
I've managed to recreate the issue with Google Chrome - after posting and then being returned back to the thread if you click the 'Click to go back...' arrow (<-) GC trys to resend the post
if you do the same in Internet Explorer it displays post_info.asp thanking you for your contribution
Trying the above out on a php forum GChrome doesn't retain the form field information
It appears that because Snitz uses the post_info.asp as an intermediary page it is that page that browsers are returning to when the 'back' button is clicked and the main browsers show the after post message, whereas Google Chrome attempts to reprocess the form information |
Edited by - Webbo on 04 September 2013 16:51:31 |
|
|
Topic |
|