Hoe om gebruikers te helpen eenvoudig insluiten video's op een SMF Site

Gepost in SMF (Simple Machine Forum) door ShortLikeAFox op 10-08-2008

Dus u bent verantwoordelijk voor het opzetten van een Simple Machines Forum gebaseerd site en willen een waterdichte manier om gebruikers te verankeren video's van populaire video sites (YouTube, Google Video, IGN, enz.). U kunt terecht bang te zijn in zodat gebruikers de embed code gewoon gebruik maken van die afzonderlijke sites, want God weet wat de resultaten zullen zijn. De oplossing voor dit probleem is zo simpel als maar kan. Karl Benson schreef een wijziging pakket dat video inbedding maakt net zo eenvoudig als het knippen en plakken van de URL van de pagina van de video lijkt inch Dit pakket werkt voor meer dan 150 sites en is genoemd AEVAC (Audio Embed Video / audio-clips). De meest recente versie is versie 3.1.2 en kan worden gevonden hier.

Dit is een mod ik sterk aanbevelen. Gebruikt de juiste wijze heeft het potentieel om sterk te reduceren van de frequentie en de ernst van de forumbeheerder hoofdpijn.

Hoe kan ik handmatig toe te voegen een groep van gebruikers in een SMF forum met behulp van PHP

Gepost in SMF (Simple Machine Forum) , php door ShortLikeAFox op de dertigste juli 2008

Deze handleiding gaat ervan uit dat u bekend bent met mijn post: Hoe een gebruiker handmatig toe te voegen in een SMF forum met behulp van PHP .

Ik heb onlangs geconfronteerd met de uitdaging van het verplaatsen van 800 of zo bands vanuit een database in een SMF forum. Ik geconfronteerd met een paar van de problemen bij het maken van de beweging die ik niet gaan in de eerste post:

  1. De band namen werden niet gegarandeerd veilig zijn voor een karakter per karakter te verplaatsen naar de SMF database. Dus een soort van naam wijzigen van de functie dienden te worden aangeworven.
  2. De bands hebben geen wachtwoorden. Dus een soort van wachtwoord generatie moet worden ingezet.

De stappen ging ik over tot alle bands in het forum register ging een beetje als volgt uit:

Open de Band Database

voor elke (Band) (

Genereer Wachtwoord

Wijzig de naam Band met "veilig" naam

Grab en het genereren van informatie die nodig is in te voegen van de gebruiker

Plaats Band in smf_members

Stuur een e-mail Band met het wachtwoord

)

Informatie die ik ter beschikking had gesteld van de band was het handig dat de database opgenomen: bandnaam, bandEmail en bandWebsite

Hier is het wachtwoord genererende functie gebruikte ik (blatently uit totallyphp.co.uk ):

createRandomPassword functie () (

$ Chars = "abcdefghijkmnopqrstuvwxyz023456789";

() * 1000000); srand ((double) microtime () * 1000000);

$ I = 0;

$ Pass = ";



while ($ i <= 7) (

33; $ Num = rand ()% 33;

$ Tmp = substr ($ chars, $ num, 1);

$ $ Pass = pass. $ Tmp;

$ I + +;

)

return $ pass;

)

Het wachtwoord aangemaakt hier relatief zwak, maar het was goed genoeg voor mijn doeleinden. Elk wachtwoord genererende functie zou prima werken hier. Ik koos voor deze omdat het gemakkelijk zou zijn voor de leden om te onthouden wanneer ze ervoor kozen om het niet te veranderen.

Hoe het te doen:

/ / Eerst verbinding maken met de band database
$ Username = "bandUsername";
$ Host = "bandHost";
$ Mijnwachtwoord = "bandPassword";
$ DB_NAME = "bandDatabase";

("cannot connect to server"); mysql_connect ("$ host", "$ username", "$ mijnwachtwoord") or die ("kan geen verbinding maken met server");
("cannot select DB"); mysql_select_db ("$ DB_NAME") or die ("kan niet kiezen DB");

/ / Nu pak alle bands uit de database
$ Query = "SELECT * FROM allBands";
$ Bands = mysql_query ($ query) or die ("Fout 2222b Config");
$ UserRows = mysql_num_rows ($ banden);

/ / Laten we nu eens verbinding te maken met de SMF db
$ Host = "smfhost"; / / Host-naam
$ Username = "smfuser; / / Mysql gebruikersnaam
$ Mijnwachtwoord = "smfpassword"; / / Mysql wachtwoord
$ DB_NAME = "smfdatabase"; / / Database naam

("cannot connect to server"); mysql_connect ("$ host", "$ username", "$ mijnwachtwoord") or die ("kan geen verbinding maken met server");
("cannot select DB"); mysql_select_db ("$ DB_NAME") or die ("kan niet kiezen DB");

/ / $ Vaild_chars gaat gebruikersnamen moet de array van de toegestane karakters voor. Ik besloot om alleen letters en cijfers. Er zijn ook andere karakters die gebruikt kunnen worden die niet zou leiden tot een probleem, maar voor stijl redenen heb ik besloten om te gaan met alleen cijfers en letters
$ Valid_chars = "abcdefghijklmnopqrstu VWXYZ 0 1 2 3 4 5 6 7 8 9";
$ Valid_chars = explode ("", $ valid_chars);

/ / Nu moeten we voor het doorlussen van elke band

){ for ($ i = 0; $ i <$ userRows; $ i + +) (

($bands)){ if ($ row = mysql_fetch_assoc ($ bands)) (

/ / Extraheer de band informatie
extract ($ row);
/ / Maak een wachtwoord voor de band
= $ RealPassword createRandomPassword ();
/ / Ik kies een wachtwoord echo van de bandnaam en als onderdeel van mijn debuggen en dus kan ik de functie zien als het werkt
echo ("<br/> bandnaam $ - $ realPassword");
NewBand $ = "";
/ / Voor elke letter in de naam voor de band gaan we kijken of het overeenkomt met een geldig teken van $ valid_chars. Zij het niet we gaan om zich te ontdoen van het afkappen en de naam van de band
($bandName); $j ++ ){ for ($ j = 0; $ j <strlen ($ bandnaam); $ j + +) (

($band[$j])); $ Temp = str_replace ($ valid_chars, "X", strtolower ($ band [$ j]));
if ($ temp == "X")

= $ $ NewBand newBand. Band $ [$ j];

)
/ / Ik sluit me aan de nieuwe naam voor dezelfde reden herhaal ik de oude naam en wachtwoord
echo ("- $ newBand");
/ / We hebben de nieuwe naam voor de band .... Laten we nu eens beginnen met de info buliding voegen we moeten in de db ...
= $ $ Membername newBand;
= $ $ Realname newBand; / / ik de echte naam en de naam hetzelfde. De bands kunnen veranderen als ze dat willen
$ Emailadres = $ bandEmail;
= $ $ WebsiteUrl bandWebsite; / / Sinds ik de bands 'websites kan net zo goed betreden
= $ $ WebsiteTitle newBand;
$ Is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ Wachtwoord = sha1 (strtolower ($ membername). RealPassword $); / / wachtwoord moet worden gecodeerd

/ / Zorg ervoor dat hun geen lid is met dezelfde naam in de SMF database. We willen niet per ongeluk iemand tweemaal in te voeren
$ Query = "SELECT * FROM WHERE smf_members membername = '$ membername'";
("Config Error 2222343242b"); $ Result = mysql_query ($ query) or die ("Fout 2222343242b Config");
$ NRows = mysql_num_rows ($ result);

/ / Als de gebruikersnaam is niets gevonden
if ($ nRows> 0) ()

else (

/ / Als de gebruiker nog niet is aangemeld voor het forum, doe dat dan en stuur een e-mail ....
$ Query = "INSERT INTO smf_members (membername, echte naam, emailadres, is_activated, ID_POST_GROUP, passwd, websiteUrl, websiteTitle) VALUES ('$ membername', '$ realname', '$ emailadres', '$ is_activated', '$ ID_POST_GROUP' , '$ wachtwoord', '$ websiteUrl', '$ websiteTitle') ";

("Config Error 2232 "); $ Result = mysql_query ($ query) or die ("Fout 2232 Config");

/ / Nu moeten we de band stuur een e-mail
$ Tot = $ emailadres;
$ Subject = "Uw gebruikersnaam en wachtwoord forum";

/ / Van
$ Header = "From: Me <me@mysite.com>";

/ / Uw bericht
$ Bericht .= "Uw login en paswoord staan hieronder vermeld. U kunt op elk moment te wijzigen, hetzij. Als u niet wilt deelnemen aan onze forums, dat is geen probleem. Gewoon nooit in te loggen en het zal zijn als er niets is gebeurd. \ r \ n ";
$ Bericht .= "Gebruikersnaam: Wachtwoord membername $: $ realPassword \ r \ n";

/ / E-mail sturen
$ Verzondenberichten = mail ($ naar, $ onderwerp, $ bericht, $ header);
if ($ verzondenberichten)

echo ("- Ja!");
/ / Dit is het laatste deel van onze echo. De "-YES!" zal alleen worden afgedrukt als een e-mail wordt verzonden. Dus een volledige afdruk lijn zal er ongeveer zo uitzien:
/ / Adam Strife - 4s6vsxag - AdamStrife - YES!

)

)
)

Hoe kan ik een gebruiker handmatig toe te voegen in een SMF forum met behulp van PHP

Gepost in SMF (Simple Machine Forum) , php door ShortLikeAFox op 28-07-2008

Dit specifieke voorbeeld is voor SMF 1.1.5. Ik kan niet garanderen dat het zal werken met elke andere versie.

Dus loopt u eenvoudige machine Forum Software en wil handmatig een gebruiker? Geen probleem. Ik weet dat dit probleem lijkt zeer specifiek, maar de ideeën die hier worden uitgelegd kan worden aangepast aan andere vormen van forums en andere database-driven software pakketten, zoals Wordpress. Voordat we in precies hoe dit te doen, laten we eens kijken hoe eenvoudige machine Forums houdt van de gebruikers. In het SMF database is er een tabel met de naam smf_members. De smf_members structuur ziet er als volgt uit:

Veld Type Nul

Toets Verzuim Extra
ID_MEMBER mediumint (8) unsigned NO PRI NULL auto_increment
membername varchar (80) NO MUL
dateRegistered int (10) unsigned NO MUL 0
berichten mediumint (8) unsigned NO MUL 0
ID_GROUP smallint (5) unsigned NO MUL 0
lngfile tinytext NO MUL
lastLogin int (10) unsigned NO MUL 0
realname tinytext NO
Chatberichten smallint (5) NO 0
unreadMessages smallint (5) NO 0
buddy_list tekst NO
pm_ignore_list tekst NO
messageLabels tekst NO
passwd varchar (64) NO
emailadres tinytext NO
personalText tinytext NO
geslacht tinyint (4) unsigned NO 0
geboortedatum datum NO MUL 0001-01-01
websiteTitle tinytext NO
websiteUrl tinytext NO
plaats tinytext NO
ICQ tinytext NO
AIM varchar (16) NO
YIM varchar (32) NO
MSN tinytext NO
hideEmail tinyint (4) NO 0
showOnline tinyint (4) NO 1
Tijdnotatie varchar (80) NO
handtekening tekst NO
timeOffset zweven NO 0
Avatar tinytext NO
pm_email_notify tinyint (4) NO 0
karmaBad smallint (5) unsigned NO 0
karmaGood smallint (5) unsigned NO 0
usertitle tinytext NO
notifyAnnouncements tinyint (4) NO 1
notifyOnce tinyint (4) NO 1
notifySendBody tinyint (4) NO 0
notifyTypes tinyint (4) NO 2
memberIP tinytext NO
memberIP2 tinytext NO
secretQuestion tinytext NO
secretAnswer varchar (64) NO
ID_THEME tinyint (4) unsigned NO 0
is_activated tinyint (3) unsigned NO 1
validation_code varchar (10) NO
ID_MSG_LAST_VISIT int (10) unsigned NO 0
additionalGroups tinytext NO
smileySet varchar (48) NO
ID_POST_GROUP smallint (5) unsigned NO MUL 0
totalTimeLoggedIn int (10) unsigned NO 0
passwordSalt varchar (5) NO

Velden dienen we aandacht te besteden aan:

  • membername - zonder verdere uitleg.
  • dateRegistered - Is niet nodig, maar als niet is ingevuld de datum geregistreerd wordt weergegeven als 31/12/1969. De datum wordt opgeslagen als een tijdperk timestamp. Weet niet hoe timestamps berekenen in je hoofd? Geen probleem. Ik gebruik de vrije generator gevonden hier .
  • realname - moeten worden ingevoegd. Als ik niet zeker of ik alleen hier te herhalen membername.
  • e-mailadres - zonder verdere uitleg.
  • is_activated - Moet worden ingesteld op 1 omdat we handmatig activeren van een lid.
  • ID_POST_GROUP - Ik zal niet liegen. Ik weet niet zeker wat dit is, maar het lijkt altijd wel tot en met 4. Dus .... Ik heb altijd stel deze in op 4. Niet de beste manier om het programma, maar wat kan je doen?
  • passwd - Het wachtwoord dat u wilt gebruiker het nieuwe. Het is onmogelijk om erachter te komen hoe te betreden zonder te kijken naar de SMF documentatie. De juiste code voor het coderen van een SMF-wachtwoord voor de database ziet er als volgt uit:

($memberName).$password) $ Passwd = sha1 (strtolower ($ membername). $ Wachtwoord)

In de bovenstaande regel code, $ wachtwoord van de gebruiker werkelijke wachtwoord.

Hoe het te doen:

/ / Eerste, verbinding te maken met de SMF database

$ Host = "hostname"; / / Host-naam
$ Username = "Gebruikersnaam"; / / Mysql gebruikersnaam
$ Mijnwachtwoord = "wachtwoord"; / / Mysql wachtwoord
$ DB_NAME = "gebruikersnaam"; / / Database naam

("cannot connect to server"); mysql_connect ("$ host", "$ username", "$ mijnwachtwoord") or die ("kan geen verbinding maken met server");
("cannot select DB"); mysql_select_db ("$ DB_NAME") or die ("kan niet kiezen DB");

$ Membername = "ironman";
$ Realname = "Tony Stark";
$ Emailadres = "ironMan@ironMan.com";
$ Is_activated = 1;
$ ID_POST_GROUP = 4;

$ Wachtwoord = "Tony1234";

($memberName).$password); $ Wachtwoord = sha1 (strtolower ($ membername). $ Wachtwoord);

$ DateRegistered = 1216951200 / / 7-25-2008 2 AM

$ Query = "INSERT INTO smf_members (membername, echte naam, emailadres, is_activated, ID_POST_GROUP, passwd, dateRegistered) VALUES ('$ membername', '$ realname', '$ emailadres', '$ is_activated', '$ ID_POST_GROUP', ' $ wachtwoord ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ Result = mysql_query ($ query) or die ("Fout SMF 101.234");

Dat is alles wat er is!