Как вручную добавить группу пользователей в РВСН Форума с помощью PHP

Написал в РВСН (Simple Машина форум), PHP путем ShortLikeAFox от 30 июля 2008 года

Это руководство предполагает, что вы знакомы с моей должности: Как вручную включить пользователя в РВСН Форум Использование PHP.

Недавно я столкнулся с проблемой продвижения 800 или около того полос из базы данных в РВСН форума. Я столкнулся с парой проблем при переезде, что я не охватывают в первую должность:

  1. Полоса имена не были гарантированы безопасность для символа, символа перейти в РВСН данных. Так какую фамилию изменить функции должны быть заняты.
  2. Полосы не имеют паролей. Поэтому некоторым видам генерации пароля должна быть занятыми.

Шагами я ходил в регистрации всех диапазонах в форуме выходит мало, как это:

Открытая база данных Band

за каждый (Band) (

Генерация пароля

Переименовать Band с "безопасной" название

Grab и накопления информации, необходимой для вставки пользователей

Вставить Band в smf_members

Отправить Band сообщение с паролем

)

Информация я можно получить в диапазоне данных, что является полезным относятся: bandName, bandEmail и bandWebsite

Вот функция генерации пароля я использовал (blatently взяты из totallyphp.co.uk):

Функция createRandomPassword () (

$ символов = "abcdefghijkmnopqrstuvwxyz023456789";

() * 1000000); srand ((двухместный) microtime () * 1000000);

$ I = 0;

$ проход = ";



Хотя ($ I <= 7) (

33; $ п = RAND ()% 33;

$ TMP = SUBSTR ($ символов, $ п, 1);

$ = $ проход проход. $ TMP;

$ I + +;

)

вернуться $ проход;

)

Пароль создали здесь сравнительно слабы, но он был достаточно хорош для моих целей. Любая генерация паролей функция будет работать здесь. Я выбрал эту потому что было бы легко запомнить членов, если они решили не менять его.

Как это сделать:

/ / Первый подключиться к базе данных полоса
Имя пользователя $ = "bandUsername";
$ принимающих = "bandHost";
MyPassword $ = "bandPassword";
$ DB_NAME = "bandDatabase";

("cannot connect to server"); mysql_connect ( "$ пребывания", "$ Имя пользователя", "$ MyPassword") или умереть ( "не могу подключиться к серверу");
("cannot select DB"); mysql_select_db ( "$ DB_NAME") или умереть ( "не может выбрать БД");

/ / Теперь захватывать все полос из базы данных
$ запрос = "SELECT * FROM allBands";
$ полос = mysql_query ($ запроса) или умереть ( "Ошибка конфигурации 2222b");
$ userRows = mysql_num_rows ($ полос);

/ / Теперь подключиться к РВСН DB
$ принимающих = "smfhost"; / / Имя хоста
Имя пользователя $ = "smfuser; / / MySQL имя пользователя
$ MyPassword = "smfpassword"; / / MySQL пароль
$ DB_NAME = "smfdatabase"; / / имя базы данных

("cannot connect to server"); mysql_connect ( "$ пребывания", "$ Имя пользователя", "$ MyPassword") или умереть ( "не могу подключиться к серверу");
("cannot select DB"); mysql_select_db ( "$ DB_NAME") или умереть ( "не может выбрать БД");

/ / $ vaild_chars будет массив разрешенных символов для пользователей. Я решил позволить только буквы и цифры. Есть и другие символы, которые могут быть использованы, что не будет вызывать проблемы, но по стилю причин я решил пойти в только буквы и цифры
$ valid_chars = "abcdefghijklmnopqrstu vwxyz 0 1 2 3 4 5 6 7 8 9";
$ valid_chars = взорваться ( "", $ valid_chars);

/ / Теперь нам необходимо петли в каждом диапазоне

){ за ($ i = 0; $ I <$ userRows; $ I + +) (

($bands)){ если ($ = строка mysql_fetch_assoc ($ диапазонах)) (

/ / Извлечение информации полоса
Экстракт ($ строка);
/ / Создать пароль для полосы
$ realPassword = createRandomPassword ();
/ / Я выбрал бы повторить bandname и пароль, а часть моей отладки и так я вижу функции, как это работает
эхо ( "<br/> $ bandName - $ realPassword");
newBand $ = "";
/ / Для каждого письма в полосе название мы будем с нетерпением увидеть, если он совпадает с действительным характером от $ valid_chars. Это не мы собираемся, чтобы избавиться от его и урезать полосе название
($bandName); $j ++ ){ для ($ J = 0; $ J <strlen ($ bandName); $ J + +) (

($band[$j])); $ Temp = str_replace ($ valid_chars, "Х", strtolower ($ полосы [$ J]));
если ($ Temp == "X")

newBand $ = $ newBand. диапазоне $ [$ J];

)
/ / Я присоединяюсь к новым именем по той же причине я присоединяюсь к старым именем и паролем
эхо ( "- $ newBand");
/ / У нас есть новые Band имя .... Теперь давайте начнем buliding информация нам нужна для вставки в БД ...
memberName $ = $ newBand;
realName $ = $ newBand; / / установить подлинное имя и имя члена то же самое. Полос может измениться, если они хотят
адрес электронной почты $ = $ bandEmail;
websiteUrl $ = $ bandWebsite; / / Со мною банды "веб-сайты, возможно, а войти в них
websiteTitle $ = $ newBand;
$ is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ Password = SHA1 (strtolower ($ memberName). realPassword $); / / Пароль должен быть зашифрован

/ / Убедитесь, что не является членом их с таким же именем в РВСН данных. Мы не хотим, чтобы случайно никого вводить в два раза
$ запрос = "SELECT * FROM smf_members ГДЕ memberName = '$ memberName";
("Config Error 2222343242b"); $ результат = mysql_query ($ запроса) или умереть ( "Ошибка конфигурации 2222343242b");
$ nrows = mysql_num_rows ($ результата);

/ / Если имя члена найдено ничего не делать
если ($ nrows> 0) ()

остальное (

/ / Если пользователь еще не зарегистрировались на форуме, сделать это и отправить по электронной почте ....
$ запрос = "INSERT INTO smf_members (memberName, realName, адрес электронной почты, is_activated, ID_POST_GROUP, пароль, websiteUrl, websiteTitle) VALUES ( '$ memberName', '$ realName', '$ адрес электронной почты', '$ is_activated', '$ ID_POST_GROUP" , '$ Пароль', '$ websiteUrl', '$ websiteTitle') ";

("Config Error 2232 "); $ результат = mysql_query ($ запроса) или умереть ( "Config Ошибка 2232");

/ / Теперь нам необходимо отправить по электронной почте полоса
до $ = $ адрес электронной почты;
$ вопросу = "Ваш форум, имя пользователя и пароль";

/ / С
$ HEADER = "От: Me <me@mysite.com>";

/ / Ваше сообщение
$ сообщения .= "Ваш логин и пароль, которые перечислены ниже. Вы можете либо изменить в любое время. Если вы не хотите участвовать в наших форумах, это не проблема. Просто никогда не войти, и он будет, как ничего не произошло . \ R \ N ";
$ сообщения .= "Имя пользователя: Пароль memberName $: $ realPassword \ R \ N";

/ / Отправить сообщение
$ = отправленные почтой ($ к $ при условии, $ сообщении, $ заголовка);
если ($ отправленные)

эхо ( "- ДА!");
/ / Это последняя часть нашего эхо. "-ДА!" будет только печатные, если сообщение отправляется. Поэтому полная распечатка линия будет выглядеть примерно так:
/ / Адам волнений - 4s6vsxag - AdamStrife - ДА!

)

)
)

Как вручную добавить пользователя в РВСН Форума с помощью PHP

Написал в РВСН (Simple Машина форум), PHP путем ShortLikeAFox от 28 июля 2008 года

Этот конкретный пример для РВСН 1.1.5. Я не могу гарантировать это будет работать с любой другой версии.

Таким образом вы запускаете Простые машины Программное обеспечение форума и хочу, чтобы вручную ввести пользователя? Нет проблем. Я знаю, эта проблема представляется весьма специфический, но идеи, объяснил здесь могут быть адаптированы для других типов форумов и других баз данных по инициативе программных пакетов, таких, как Wordpress. Прежде чем мы получаем в точности, как это сделать, давайте взглянем на то, как простые машины Форумы отслеживает пользователей. В РВСН базе данных есть таблица называется smf_members. Smf_members структура выглядит следующим образом:

Области Тип Нуль

Основных По умолчанию Дополнительно
ID_MEMBER mediumint (8) неподписанное НЕТ PRI NULL AUTO_INCREMENT
memberName VARCHAR (80) НЕТ MUL
dateRegistered INT (10) неподписанное НЕТ MUL 0
должности mediumint (8) неподписанное НЕТ MUL 0
ID_GROUP SMALLINT (5) неподписанное НЕТ MUL 0
lngfile tinytext НЕТ MUL
lastLogin INT (10) неподписанное НЕТ MUL 0
realName tinytext НЕТ
Чат SMALLINT (5) НЕТ 0
unreadMessages SMALLINT (5) НЕТ 0
buddy_list текст НЕТ
pm_ignore_list текст НЕТ
messageLabels текст НЕТ
пароль VARCHAR (64) НЕТ
адрес электронной почты tinytext НЕТ
personalText tinytext НЕТ
пола tinyint (4) неподписанное НЕТ 0
Дата рождения дата НЕТ MUL 0001-01-01
websiteTitle tinytext НЕТ
websiteUrl tinytext НЕТ
местонахождение tinytext НЕТ
ICQ tinytext НЕТ
AIM VARCHAR (16) НЕТ
YIM VARCHAR (32) НЕТ
MSN tinytext НЕТ
hideEmail tinyint (4) НЕТ 0
showOnline tinyint (4) НЕТ 1
timeFormat VARCHAR (80) НЕТ
подпись текст НЕТ
timeOffset поплавок НЕТ 0
аватар tinytext НЕТ
pm_email_notify tinyint (4) НЕТ 0
karmaBad SMALLINT (5) неподписанное НЕТ 0
karmaGood SMALLINT (5) неподписанное НЕТ 0
usertitle tinytext НЕТ
notifyAnnouncements tinyint (4) НЕТ 1
notifyOnce tinyint (4) НЕТ 1
notifySendBody tinyint (4) НЕТ 0
notifyTypes tinyint (4) НЕТ 2
memberIP tinytext НЕТ
memberIP2 tinytext НЕТ
secretQuestion tinytext НЕТ
secretAnswer VARCHAR (64) НЕТ
ID_THEME tinyint (4) неподписанное НЕТ 0
is_activated tinyint (3) неподписанное НЕТ 1
validation_code VARCHAR (10) НЕТ
ID_MSG_LAST_VISIT INT (10) неподписанное НЕТ 0
additionalGroups tinytext НЕТ
smileySet VARCHAR (48) НЕТ
ID_POST_GROUP SMALLINT (5) неподписанное НЕТ MUL 0
totalTimeLoggedIn INT (10) неподписанное НЕТ 0
passwordSalt VARCHAR (5) НЕТ

Поля нам необходимо обратить внимание на:

  • memberName - самостоятельное Explanitory.
  • dateRegistered - не является необходимым, но если не заполнены дата зарегистрированных дисплеи, как 31 декабря 1969 года. Дата сохраняется как эпоха времени. Не знаю, как рассчитать время в вашей голове? Нет проблем. Я использую бесплатно генератор найти здесь.
  • realName - должны быть вставлены. Когда я не уверен, я просто повторяю memberName здесь.
  • адрес электронной почты - самостоятельное Explanitory.
  • is_activated - должны быть установлены к 1, поскольку мы вручную активации члена.
  • ID_POST_GROUP - Я не буду лгать. Я не уверен, что это такое, но оно всегда кажется, будет установлен на 4. Итак .... Я всегда установить его на 4. Не самый лучший путь к программе, но то, что вы можете сделать?
  • пароль - пароль, который Вы хотите придать новый пользователь. Невозможно понять, как войти, не глядя на ФСМ документации. Правильного кода для шифрования РВСН пароль для базы данных выглядит так:

($memberName).$password) $ пароль = SHA1 (strtolower ($ memberName). $ пароль)

В приведенной выше строке кода, $ пароля пользователя фактический пароль.

Как это сделать:

/ / Во-первых, подключиться к базе данных РВСН

$ принимающих = "имя хоста"; / / Имя хоста
Имя пользователя $ = "Имя пользователя"; / / MySQL имя пользователя
$ MyPassword = "пароль"; / / MySQL пароль
$ DB_NAME = "Имя пользователя"; / / имя базы данных

("cannot connect to server"); mysql_connect ( "$ пребывания", "$ Имя пользователя", "$ MyPassword") или умереть ( "не могу подключиться к серверу");
("cannot select DB"); mysql_select_db ( "$ DB_NAME") или умереть ( "не может выбрать БД");

$ memberName = "Железный человек";
$ realName = "Тони Старк";
адрес электронной почты $ = "ironMan@ironMan.com";
$ is_activated = 1;
$ ID_POST_GROUP = 4;

$ Password = "Tony1234";

($memberName).$password); $ Password = SHA1 (strtolower ($ memberName). $ пароль);

$ dateRegistered = 1216951200; / / 7-25-2008 2 утра

$ запрос = "INSERT INTO smf_members (memberName, realName, адрес электронной почты, is_activated, ID_POST_GROUP, пароль, dateRegistered) VALUES ( '$ memberName', '$ realName', '$ адрес электронной почты', '$ is_activated', '$ ID_POST_GROUP', ' $ пароль ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ результат = mysql_query ($ запроса) или умереть ( "Ошибка 101,234 РВСН");

Это все есть на него!

Как сделать эскизов изображений с помощью PHP

Написал в функции PHP на ShortLikeAFox по 22 Июль 2008

Таким образом, вы хотите создать эскиз с учетом изображений ... PHP делает эту задачу легко. Сначала я написал функцию ниже, чтобы рассматривать картинки загруженные пользователями на сайте я помочь управлять. Загруженные изображения на этом сайте может быть в формате JPEG, PNG файлов, или GIFs, так что мне пришлось писать функцию для борьбы со всеми тремя. Этот код изначально основаны списание функции найти на webcheatsheet.com

Как это сделать:

Функция createThumbs ($ pathToImages, $ FName, $ pathToThumbs, $ thumbWidth)
(

/ / Разбор путь для расширения

Информация $ = pathinfo ($ pathToImages. $ FName);
/ / Продолжать только в том случае, если это JPEG изображение
($info['extension']) == ‘jpeg’) ) если ((strtolower ($ Инфо [ 'расширение']) == 'JPG') | | (strtolower ($ Инфо [ 'расширение']) == 'JPEG'))
(

/ / Загрузить изображение и получить изображение размером
$ IMG = imagecreatefromjpeg ( "($ pathToImages) ($ FName)");
$ ширина = imagesx ($ IMG);
$ = высота imagesy ($ IMG);

/ / Вычислить размер эскизов
new_width $ = $ thumbWidth;
$ = new_height этаж (высота * $ ($ thumbWidth / $ ширину));

/ / Создание новых временных изображений
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Копировать и изменять размеры изображений старый в новый образ
imagecopyresized ($ tmp_img, $ IMG, 0, 0, 0, 0, $ new_width, $ new_height, $ ширина, $ высота);

/ / Сохранить миниатюру в файл
imagejpeg ($ tmp_img, "($ pathToThumbs) ($ FName)");

)

если (strtolower ($ Инфо [ 'расширение']) == 'GIF')
(

/ / Загрузить изображение и получить изображение размером
$ IMG = imagecreatefromgif ( "($ pathToImages) ($ FName)");
$ ширина = imagesx ($ IMG);
$ = высота imagesy ($ IMG);

/ / Вычислить размер эскизов
new_width $ = $ thumbWidth;
$ = new_height этаж (высота * $ ($ thumbWidth / $ ширина));

/ / Создание новых временных изображений
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Копировать и изменять размеры изображений старый в новый образ
imagecopyresized ($ tmp_img, $ IMG, 0, 0, 0, 0, $ new_width, $ new_height, $ ширина, $ высота);

/ / Сохранить миниатюру в файл
imagegif ($ tmp_img, "($ pathToThumbs) ($ FName)");

)

если (strtolower ($ Инфо [ 'расширение']) == 'PNG')
(

/ / Загрузить изображение и получить изображение размером
$ IMG = imagecreatefrompng ( "($ pathToImages) ($ FName)");
$ ширина = imagesx ($ IMG);
$ = высота imagesy ($ IMG);

/ / Вычислить размер эскизов
new_width $ = $ thumbWidth;
$ = new_height этаж (высота * $ ($ thumbWidth / $ ширину));

/ / Создание новых временных изображений
$ tmp_img = imagecreatetruecolor ($ new_width, $ new_height);

/ / Копировать и изменять размеры изображений старый в новый образ
imagecopyresized ($ tmp_img, $ IMG, 0, 0, 0, 0, $ new_width, $ new_height, $ ширина, $ высота);

/ / Сохранить миниатюру в файл
imagepng ($ tmp_img, "($ pathToThumbs) ($ FName)");

)

)

Как это работает

Функция createThumbs принимает четыре аргумента.

  • $ pathToImages -> Путь к папке файл образа является дюйма Она может выглядеть примерно так: / Главная / Содержание / имя пользователя / HTML / список / закачки /
  • $ FName -> Имя файла: pic1.gif, johnny.jpg, и т.д. ...
  • $ pathToThumbs -> Путь к папке, вы хотите эскизов изображений для дюйма вы не хотите, чтобы это тот же путь, как $ pathToImages, потому эскизов изображений будут иметь то же имя в качестве исходного изображения.
  • $ thumbWidth -> Ширина, что вы хотите миниатюру, чтобы быть в пикселях.

Важно отметить, что я должен сделать здесь заключается в том, что эта функция не имеет ничего месте, кроме файла расширение проверить, чтобы убедиться, что файлы содержат ничего вредоносного. Поскольку файлы createThumbs () работает с уже загрузили предполагается, что файлы были надлежащим образом тщательно.

Первым делом createThumbs () делает это слово pathinfo (). pathinfo () разбивает части пути в массиве. Это полезно для нас, потому что нам необходимо расширение файла правильно создавать эскизы. Далее createThumbs () проверяет, есть, если мы имеем дело с JPEG. Если исходный файл JPEG createThumbs создает новый имидж основан на исходном изображении с imagecreatefromjpeg (). Следующий шаг состоит в том, чтобы ширина и высота этого изображения (imagesx (), imagesy ()). Использование $ thumbWidth и соотношения первоначальной ширины и высоты createThumbs () устанавливает новый ширина и высота эскизов. Используя эти новые коэффициенты createThumbs () создает "пустые" изображения, которое будет таким же, ширина и высота эскизов с imagecreatetruecolor (). Imagecopyresized () используется для изменения размера изображения и сохраните его в "пустой" только создается. imagecopyresized () может показаться, как он принимает много параметров, но если вы посмотрите на документацию, это действительно не так сложно. Теперь, когда эскиз существует как True Color изображение всех createThumbs нужно сделать, это конвертировать файл в формате JPEG. Для этого imagejpeg () называется.

Вот как функция работает в формате JPEG. Есть минимальные различия в. PNG файлов и. GIFs.

Как написать браузера кода с PHP

Добавлено в PHP путем ShortLikeAFox от 21 июля 2008 года

Так вы хотите написать код, который появляется только на некоторых браузерах ... Есть целый ряд причин хотеть это сделать. В первый раз я лично необходимо сделать это произошло, когда я пытался вставить mp3 на определенную страницу. По некоторым причинам я не мог писать код так, что mp3 будет играть в браузерах я тест на (IE, Firefox, и Опера), а также проверить в то же время. Если я правильно помню, он был Internet Explorer, которая была причиной проблемы. Решение я пришел с состояла в том, чтобы использовать PHP мало, чтобы узнать, когда пользователь с помощью IE, а затем вставлять mp3, не верный код, если это было так.

Это решение привело к mp3 всегда играли правильно и всегда страница подтверждения, так как W3C валидатор никогда не идентифицирует себя как IE. Это может быть не самым этическим способом достичь выполнения W3C, но она работает.

В другой раз я помню, нужно писать код браузера, когда я был, имеющих проблемы с IE 6 не отображается моя. PNG изображения правильно. Я googled вокруг и обнаружили несколько решений проблемы, но оба они оказались баловаться деятельности в целом слой места на моих страницах. Вместо устранения неполадок, что проблема, я пошел с быстрого решения, и решил для отображения. GIFs, когда пользователь был IE 6. Если пользователь был другой браузер, который был. PNG проблемы, я подумал, что было слишком плохо для него.

Как это сделать:

Сначала нужно написать несколько строк кода, чтобы выяснить, что ваш браузер пользователя. Вот как это сделать с PHP:

  • 'HTTP_USER_AGENT' ]; visitorsOS $ = $ _SERVER [ "HTTP_USER_AGENT"];

Вот три примера того, что $ visitorsOS может выглядеть

  • Mozilla/4.0 (совместимый; MSIE 6.0; Windows NT 5.1; SV1;. NET CLR 1.0.3705;. NET
  • Opera/9.51 (Windows NT 5.1; U; PL)
  • Mozilla/5.0 (Windows; U; Windows NT 5.1; EN-US; Р.В.: 1.9) Gecko/2008052906 Firefox

Первый пользователь Internet Explorer 6, второй Опера 9,51, а третий Firefox.

Теперь о том, что мы знаем больше информации, чем мы действительно нуждаемся в отношении посетителя компьютера мы должны поставить эту информацию для эффективного использования. Скажем вы хотите написать код, который будет появляться только если пользователь работает в любой версии Internet Explorer. В этом случае вы могли бы сделать это:

(’MSIE’,$visitorsOS)){ если (eregi ( "MSIE", $ visitorsOS)) (

Код, который будет появляться только если пользователь т.е.

)

остальное (

Код, который будет появляться во всех других случаях

)

Я использую eregi, нечувствительное регулярные выражения соответствуют вместо EREG, чувствительны к регулярным выражением матч. Я не помню, если я делаю это паранойя, или если я действительно обнаружили случае, если Internet Explorer определили себя как MSIE. В любом случае eregi не повредит ничего так это то, что я использую. Хотеть писать код для конкретной версии IE, требуют лишь небольших изменений. вместо ... (eregi ( "MSIE" ...) Я хотел бы использовать нечто вроде (eregi ( "MSIE 6.0" ...) если я хочу код, который появился только в MSIE 6.0.


Следующие записи »