Snitz™ Forums 2000
https://forum.snitz.com/forumTopic/Posts/70591?pagenum=1
05 November 2025, 18:31
Topic
Carefree
Topic/Reply CheckSum
01 September 2013, 00:54
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.
Replies ...
HuwR
02 September 2013, 05:12
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 ?
Carefree
02 September 2013, 07:19
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
02 September 2013, 07:43
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.
Carefree
02 September 2013, 09:26
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
02 September 2013, 09:50
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.
ruirib
03 September 2013, 05:13
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.
Carefree
03 September 2013, 07:55
No problem. Easy to change. Done and updated.
Webbo
03 September 2013, 16:43
Is there any chance you can post the changes above to this thread for those that have already implemented it ?
Carefree
03 September 2013, 20:45
Sure. Implementing the change to the field size, though, would require you to rerun a dbs file.
"post_info.asp"
Code:
Look for the following line (appx 825):
strSql = "SELECT * FROM " & strTablePrefix & "TOPICS WHERE (T_AUTHOR="&MemberID&" AND T_DATE>='" & strDate10 & "' AND T_CHKSUM>'') ORDER BY T_DATE DESC"
Change it to say:
strSql = "SELECT T_CHKSUM FROM " & strTablePrefix & "TOPICS WHERE (T_AUTHOR="&MemberID&" AND T_DATE>='" & strDate10 & "' AND T_CHKSUM>'') ORDER BY T_DATE DESC" Look for the following line (appx 1076):
strSql = "SELECT * FROM " & strTablePrefix & "REPLY WHERE (R_AUTHOR="&MemberID&" AND R_DATE>='" & strDate10 & "' AND R_CHKSUM>'' AND TOPIC_ID=" & Topic_ID & ") ORDER BY R_DATE DESC"
Change it to say:
strSql = "SELECT R_CHKSUM FROM " & strTablePrefix & "REPLY WHERE (R_AUTHOR="&MemberID&" AND R_DATE>='" & strDate10 & "' AND R_CHKSUM>'' AND TOPIC_ID=" & Topic_ID & ") ORDER BY R_DATE DESC"
The dbs file returns errors with a MySql database Carefree....
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
04 September 2013, 03:02
Should probably use mySql's "modify" command. Try this for MySQL:
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
Webbo
04 September 2013, 16:11
Carefree's code returned the following:
Code:
Dropping Column...
ALTER TABLE FORUM_TOPICST_CHKSUM ALTER TABLE FORUM_TOPICST_CHKSUM -2147217865 | [MySQL][ODBC 5.1 Driver][mysqld-5.1.56-community]Table 'maggot_info.forum_topicst_chksum' doesn't exist
(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
HuwR
04 September 2013, 17:00
it is a bug in Chrome
Jul 23, 2013 Chrome Version : 29.0.1547.22
What steps will reproduce the problem?
1. POST a web form 2. go somewhere else 3. press back
What is the expected result?
Chrome should show the state after the form was POSTed.
What happens instead of that?
Chrome rePOSTs unnecessarily repeating the action
Please provide any additional information below. Attach a screenshot if possible.
This is a regression from the previously good behavior that started with Chrome 29.
UserAgentString: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.22 Safari/537.36
golfmann
04 September 2013, 22:58
That pesky Blink core?...
Carefree
05 September 2013, 01:49
Originally posted by Webbo
My version did ..... er, nothing
OK here's a stand-alone for MySQL. Call it whatever you'd like, save to forum folder and execute.
Code:
<!--#INCLUDE FILE="config.asp"--> <!--#INCLUDE FILE="inc_header.asp" --> <% On Error Resume Next my_Conn.Execute("ALTER TABLE " & strTablePrefix & "TOPICS MODIFY COLUMN T_CHKSUM VARCHAR(16) NULL") If Err.Number <>0 Then Response.Write Err.Description & "<br />" If Err.Source <> "" Then Response.Write Err.Source & "<br />" If Err.Line > 0 Then Response.Write Err.Line Err.Clear my_Conn.Execute("ALTER TABLE " & strTablePrefix & "REPLY MODIFY COLUMN R_CHKSUM VARCHAR(16) NULL") If Err.Number <>0 Then Response.Write Err.Description & "<br />" If Err.Source <> "" Then Response.Write Err.Source & "<br />" If Err.Line > 0 Then Response.Write Err.Line Err.Clear WriteFooter
golfmann
07 November 2013, 17:57
I implemented this and like(d) it but it messed up my archiving so I got an error message.
Had to take it all out and drop the CHKSUM tables.
Now... archiving again.
FYI
bobby131313
13 June 2014, 22:53
You need to add the checksum columns to the archive tables too...
[ALTER]
A_TOPICS ADD#T_CHKSUM#VARCHAR(16)#NULL# [END]
[ALTER]
A_REPLY ADD#R_CHKSUM#VARCHAR(16)#NULL# [END]
Carefree
14 June 2014, 06:16
I modified the SnitzBitz file for the archive table, thanks for pointing it out.