Arquivo de php

Como engadir un CAPTCHA de formulario para un sitio

Publicado php por ShortLikeAFox o 30 Mai 2009

Entón quere engadir CAPTCHA, aka Completely Automated Public Turing test para dicir Informática e Humans Apartado, aka embaralhar letras e números a un formulario web.

Isto non é difícil en todos os supondo que coñece un pouco de PHP. Eu entrar en detalles explícase como facelo, pero enriba da Boutell.com hai unha ridiculamente ben escrito, fácil de seguir paso a paso guía que explica como facelo. Go check it out.

Como enviar un correo masivo usando PHP

Publicado php por ShortLikeAFox o 19 de setembro de 2008

Entón quere enviar un correo masivo ou quere crear un programa que pode ser rapidamente alterada para enviar correo masivo múltiple. PHP fai iso fácil. Neste exemplo, vou asumir que ten unha lista de enderezos de correo-e quere enviar un correo-e certos. Tamén vou asumir que está mantendo esa lista nunha base de datos, pero este código pode ser facilmente adaptado para usar unha lista de enderezos de correo-e codificado ou lista de outra fonte.

<? PHP

/ / Primeiro Póñase á base de datos que contén a información de enderezo de correo-e.
$ User = "USER";
$ Host = "HOST";
$ Contrasinal = "contrasinal";
base de datos $ DATABASE = "";

( "Couldn't connect to server" ); CXN $ = mysql_connect ($ host, $ user, $ contrasinal) or die ("Non se puido conectar co servidor");
mysql_select_db ($ database);

/ / Consulta a táboa que contén os enderezos de correo-e. Encha o seu nome propio cadro aquí ...
$ Query = "SELECT * FROM theEmailAddresses";
( mysql_error ($cxn)); $ Resultado = mysql_query ($ query, $ CXN) or die (mysql_error ($ CXN));
nrows $ = mysql_num_rows ($ resultado);

/ / Quen é o emisor será identificado como. Pode poñer o que queiras aquí, pero realmente non é moi ético poñer un enderezo de correo-e que non controla aquí.
$ From = "From: me@mydomain.com";
/ / A liña de asunto de correo-e estándar
$ Asunto = "¿Que hai de novo no mydomain.com";
/ / A mensaxe
$ Mensaxe = "Ola amigo valorados,

Agora venden cookies no mydomain.com. Asegúrese de check it out!
Saúdos,
me ";

/ / Xa consultado todos os enderezos de correo-e. Agora nós só necesitamos enviar o correo-e
0 ; $i < $nrows; $i ){ for ($ i = 0; $ i <$ nrows; $ i ) (

$ Row = mysql_fetch_assoc ($ resultado);
Extract ($ row);
/ / Replace $ correo co que a columna de enderezos chámase
a = "$ $ correo";
/ / Enviar correo-e para cada correo electrónico na base de datos
if (e ($ a, $ asunto, $ mensaxe, $ de)) (

/ / Imprime o nome de e-mails que foron enviados. Eu uso iso só para asegurarse que o programa non ten conxelado. Na súa teoría debería ser un fluxo constante de nomes que están sendo impresos>

); echo ($ a <br/> ");

)

)




?>

Este anaco de código tira vantaxe do php mail () función. Isto é moi potente e doado de usar a función. Lembre que con gran poder vén gran responsabilidade. Probe a non usar esta función para o mal.

Como saber onde seus visitantes están xeograficamente usando PHP

Posta en Peares , php por ShortLikeAFox en setembro 13, 2008

Se tes un sitio web e quere saber onde os seus usuarios son procedentes xeograficamente PHP e Peares facer iso posíbel. Para activar o IP dun convidado nun lugar físico, o primeiro que vai ter que facer é que seguro que ten o módulo Peares Net_Geo. Se non ten o módulo Peares Net_Geo, vai ter que usar o Peares Xestor de Paquetes para adquisición-lo.

Se non pensar que ten acceso a Peares polo seu paquete de hospedaxe, confía esa explicación sobre como instalar Peares nunha conta que non permite o acceso por defecto. É escrito con GoDaddy contas compartidas presente, pero debe funcionar para a maioría dos paquetes de hospedaxe que non ven con Peares configurado.

Despois de ter Net_Geo paquete instalado, basta só algunhas liñas de código para a adquisición de datos xeográficos:

<? PHP

); require_once ("Net / Geo.php");
]; = $ _SERVER [Ip 'REMOTE_ADDR $'];
/ $ Ip / = "64.246.30.37";
firstNetGeo Net_Geo $ = new ();
Geodata = $ getRecord firstNetGeo-> ($ ip);

?>

($ip); ?> <br/> IP: <? PHP echo ($ ip);?> <br/>
($geoData[ 'LAT' ]); ?> <br/> Latitude: <? PHP echo ($ Geodata lat'[']);?> <br/>
($geoData[ 'LONG' ]); ?> Lonxitude: <? PHP echo ($ Geodata LONGA'[']);?>
<br/>
($geoData[ 'COUNTRY' ]); ?> <br/> País: <? PHP echo ($ Geodata PAÍS'[']);?> <br/>
($geoData[ 'STATE' ]); ?> <br/> Estado: <? PHP echo ($ Geodata estado'[']);?> <br/>
($geoData[ 'CITY' ]); ?> <br/> Cidade: <? PHP echo ($ Geodata City'[']);?> <br/>

O Código At Work:

IP: 74.125.75.19

Latitude:

Lonxitude:

País:

Estado:

Cidade:

Como dividir unha imaxe en varias imaxes usando PHP

Posta en funcións , php por ShortLikeAFox o 26 de agosto de 2008

Entón quere romper unha imaxe grande en varias imaxes pequenas? Sen problemas. Isto pode parecer un problema escuro, pero hai varias razóns que desexa facer isto. Pode vostede desexa crear un visual de puzzle de deslizamento . Ou quizais está executando un único tema WordPress . Ou pode utilizar crear unha collage de calquera tipo. Realmente non importa por que quere dividir unha imaxe en imaxe menor, PHP fai esta tarefa fácil. O exemplo a seguir trata só dos "JPEGs". Cambiando a función de xestionar outros tipos de imaxes non sería tan difícil.

<? PHP
/ / Esta función pode dividir unha imaxe nunha serie de columnas de tamaño igual e liñas.
split_image función ($ number_of_rows, $ number_of_cols, path_to_image $, $ FILE_NAME) (

/ / $ Number_of_rows = n º de liñas que quere;
/ / $ = # Number_of_cols de cols quere
/ Path_to_image / $ = o camiño para o cartafol a imaxe, algo así como: / home / content / username / html / lista / subidos /
/ FILE_NAME / $ = O nome do arquivo da imaxe: archery.jpg, etc

/ Análise / camiño para a extensión
$file_name); $ Info = pathinfo ($ path_to_image. $ FILE_NAME);

/ / Asegúrese de que estamos lidando cun jpeg
($info[ 'extension' ]) == 'jpg' ) || ( strtolower ($info[ 'extension' ]) == 'jpeg' ) ){ if ((strtolower ($ info 'extensión [']) == 'jpg') | | (strtolower ($ info 'extensión'] [) == 'jpeg')) (

/ Imaxe / carga e obter o tamaño da imaxe
); $ Fonte = imagecreatefromjpeg ("($ path_to_image) ($ FILE_NAME)");
$ $ Width = imagesx (orixe) / / Atopar a largura
altura = $ imagesy ($ fonte); / / Find a altura
segment_width = $ ancho / number_of_cols $ / / Determine o ancho de cada un dos segmentos
segment_height = $ altura / $ number_of_rows / / Determine a altura de cada un dos segmentos

for ($ col = 0; $ col <number_of_cols; $ $ col + +)
(

for ($ liña = 0; $ row <number_of_rows $, $ row + +)
(

, $col, $row ); $ Fn = sprintf ("img 02d_%% 02d.jpg", col, $ $ row);
); //I print the image name here, so that the process shows itself as it runs echo ("$" FN); / imprimir o nome da imaxe aquí, para que o proceso se mostra como é executado
$ Im = @ imagecreatetruecolor ($ segment_width, $ segment_height);
imagecopyresized ($ im, $ fonte, 0, 0, col segment_width $ * $, $ liña * $ segment_height, segment_width, segment_height $ $, segment_width, segment_height $ $);
$ File = "test.jpg";
/ / Gardar as imaxes
, 100 )) //The destination will be something like /home/content/c/h/d/images/$fn if (imagejpeg ($ im, "insert destino aquí", 100)) / / O destino será algo como / home contido c / h / d / images / $ FN

echo ("Foi feito! <br/>");

)

)

)

)

?>

Como incluír Funcionamento código PHP nas súas mensaxes WordPress

Posta en WordPress , php por ShortLikeAFox o 17 agosto 2008

Entón quere ser capaz de usar PHP no seu blog WordPress e páxinas. Isto non é problema. Necesitará empregar <? PHP .. ... ...?> Vai facer WordPress irritado a menos que instale un plugin primeiro. Hai algúns plugins aí fóra, que pretenden ofrecer esa capacidade, pero o que podo atopar traballa o mellor é Exec-PHP . Para comezar a usar o código PHP, siga estes pasos:

  1. Download PHP-Exec
  2. Instala-o como faría con calquera outro plugin (o enlace anterior e arquivo README vai leva-lo a través deste)
  3. Se está usando actualmente, ten que desactivar o editor WYSIWYG. Para facer isto, vaia ó usuario -> O seu perfil e desmarque a opción Usar o editor visual ao escribir checkbox
  4. Comece a escribir código php, como faría normalmente: <? Php .... O código vai aquí?>

Isto é todo o que existe para ela!

Como crear e utilizar variables nomeadas dinamicamente con PHP

Publicado php por ShortLikeAFox o 17 de agosto de 2008

Entón quere usar nomes de variables dinámicas no seu código. Sen problemas. Digamos que ten 100 variables nomeadas dog0, dog1, dog2 ...., Dog98, dog99. Porque ía querer usar 100 variables como este, en vez de unha matriz é ademais de min, pero iso non importa para este exemplo. Para definir estas variables nun circuíto rápido que podería usar o seguinte:

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

; variableName $ = can "$ i";
$ $ $ I = variableName / / configúrase $ dog1 a 1, dog2 $ 2, $ can 34-34, etc ....

)

Agora digamos que quería ter acceso a todas estas variables. Podes usar o seguinte:

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

; variableName $ = can "$ i";
echo ("<br/>");
echo ($ variableName: ");
echo ($ variableName);

)

Este loop imprime:

dog0: 0
dog1: 1
dog2: 2
dog3: 3
dog4: 4
dog5: 5
dog6: 6
dog7: 7
dog8: 8

etc ... todo o camiño para
dog99: 99

Como Intergrate Access ISBN nas súas páxinas usando PHP

Publicado php por ShortLikeAFox o 12 de agosto de 2008

ISBN ou International Standard Book Numbers son identificadores útil que pode ser usado para atopar información sobre os libros individuais. Se quere integrar buscas ISBN nas súas aplicacións web PHP fai que sexa factible.

Step One: ISBNdb.com é un ser creado ten unha API que permite aos usuarios da web para acceder base de datos de rexistros de ISBN. Aquí é a súa propia descrición da API:

ISBNdb.com 's interface de programación de aplicación de acceso remoto (API) está deseñado para permitir que outros sitios e aplicacións standalone usar a gran colección de datos recollidos por ISBNdb.com dende 2003. Como desta escrita, en xullo de 2005, os datos inclúen case 1,8 millón de libros, case 3.000.000 millóns de rexistros de biblioteca, preto dun millón de individuos, centos de miles de autor e editor de rexistros analizados de datos da biblioteca, con máis de 10 millóns de reais e os rexistros históricos prezos.

Para utilizar esta API debe primeiro rexistrarte. inscrición leva uns segundos para ser completada. A continuación, necesitas crear unha chave. Keys permítelle acceder directamente á base de datos do ISBN seu propio código. O sitio ISBNdb.com fai doado a creación de claves.

Segundo Paso: Agora comezar a escribir código para interactuar co base de datos. A solicitude dunha investigación ISBN será coma este:

Ía introducir a clave de acceso no lugar de XXXXXX. $ IsbnQuery sería o número ISBN che interesa polgadas $ isbnData é un arquivo XML. Para acceder a estes datos que necesita para deixar o seu código sabe o que está lidando. Algo como isto vai funcionar:

) ; XmlData $ = @ simplexml_load_file ($ isbnData) or die ("ningún arquivo cargado");

Agora podes acceder variables individuais con chamadas semellante a este:

]->Title ; title = $> BookList xmData [0] -> BookData [0] -> título;

Aquí está un exemplo de traballo completo:

<? PHP

Searchquery $ = "9780684801223"; / / O ISBN para Ernest Hemingway's Old Man e do Mar
= IsbnData "http://isbndb.com/api/books.xml?access_key=XXXXXX&index1=isbn&value1 Searchquery = $ $" / / Non esqueza substituír XXXXXX coa súa propia clave de acceso
) ; XmlData $ = @ simplexml_load_file ($ isbnData) or die ("ningún arquivo cargado");
]->Title ; title = $> BookList XmlData [0] -> BookData [0] -> título;
]->AuthorsText ; autores = $> BookList XmlData [0] -> BookData [0] -> AuthorsText;
]->PublisherText ; publisher = $> BookList XmlData [0] -> BookData [0] -> PublisherText;

); echo ("<br/> $ titulo");
); echo ($ <br/> autores ");
); echo ("<br/> publisher $");

/ / Este exemplo imprime:
/ / O vello eo mar
/ Hemingway / Ernest
/ / New York: Scribner Paperback Fiction, 1995.

?>

Como confirmar un enderezo de correo-e a usar PHP

Publicado php por ShortLikeAFox o 5 de agosto de 2008

Entón, precisas confirmación do enderezo do usuario de correo-e? Sen problemas. Hai moitas razóns para esixir-mail de confirmación e PHP fai máis sinxelo.

E-mail de confirmación pode ser rematada é estes pasos:

  1. Avisar o usuario para calquera información que precisa deles (incluíndo o seu enderezo de correo electrónico)
  2. Entrada de datos nunha base de datos
  3. Enviar un correo-e do usuario cunha clave de confirmación especial
  4. "Desbloquear" os datos na base de datos xa que a clave de confirmación é inserido.

Como facelo:

<? PHP

/ / Primeiro, imos conectar á base de datos

user_name = $ dbUserName ";
$ Host = dbhost ";
my_password dbpassword $ = "";
db_name dbName $ = "";

/ / Conectar co servidor de base de datos e seleccionar.
, "$user_name" , "$my_password" ) or die ( "cannot connect to server" ); mysql_connect ("$ host", "$ nome_usuario", "$ my_password") or die ("Non se pode conectar ao servidor");
) or die ( "cannot select DB" ); mysql_select_db ("$ db_name") or die ("Non se pode seleccionar a DB");

/ / A seguinte liña basicamente pregunta se o usuario precisa ter a forma dada. Le abaixo un pouco se quere ver de onde veñen as variables

(@ $_GET [ 'first' ] == "no" ) " ! (@ $_GET [ 'confirm' ] == "yes" ){ if (! (@ $ nome '] [' _GET == "non") & &! (@ $ _GET ['confirmar'] == "si") (
/ / Dende que esta é a primeira exhibición da páxina e non está incluído o código de confirmación que debe presentar o formulario para que o usuario enche
/ / Esta forma leva só un argumento (usuario o dirección de correo electrónico).
?>

method= "post" action= "index.php?first=no" > <form name= "emailConfirmation" method= "post" action= "index.php?first=no">

align = "center"> <table
<tr>
<td>
type= "text" id= "email" size= "30" /> Email: <input name= "email" type= "text" id= "email" size= "30" />
</ Td>
</ Tr>
<tr>
align = "center"> <td
name= "Submit" value= "Submit" /> <input type= "submit" name= "Submit" value= "Submit" />
</ Td>
</ Tr>
</ Table>
</ Form>

<? PHP

)

/ / Se o formulario foi enchido, hai que xerar un código de confirmación, insira o código de confirmación e-mail do usuario nunha base de datos, e enviar un correo electrónico ao enderezo de correo electrónico.
[ 'first' ] == "no" ){ //if the form has been filled out… elseif (@ $ nome '] [' _GET == "non") (/ / se o formulario foi enchido ...

/ Is_valid_email_address / NON é unha función php válido. Introduza o seu propio enderezo de correo electrónico que verifica a función aquí ...
is_valid_email_address( $_POST [ 'email' ])) if (! is_valid_email_address ($ ["correo _POST ']))

); echo ("Sorry! O enderezo de correo electrónico que escribiu non é válido.");

/ / Se o enderezo de correo-e parece válido e seguro ...
else (

]); $ Email = ($ ["correo _POST ']);
/ / Xera un código de confirmación aquí. Esta é a forma que eu escoller facelo, pero hai numerosas formas que ha traballar.
( rand ())); CONFIRMATION_CODE $ = md5 (uniqid (())); Rande
/ / Todo é máis ou menos Aceptar para entrar na base de datos e entón enviar un correo electrónico para o usuario
Consulta = "insert into emailConfirmationTable (, USER_EMAIL con_code) value ('$ correo', '$ $ CONFIRMATION_CODE')";
("Config Error 2223 "); $ Resultado = mysql_query ($ query) or die ("Erro de configuración 2223");
/ / Enviar correo-e
$ To = $ correo;
$ Subject = "A súa confirmación shortlikeafox exemplo" / / De
$ Header = "From: <info@shortlikeafox.com> shortlikeafox";
/ / A túa mensaxe
$ Mensaxe = "O seu enlace Comfirmation! \ R \ n";
$ Mensaxe .= "Prema no enlace para activar a súa conta \ r \ n";
$ Mensaxe .= "Este enlace de caduca, sempre me sinto como limpar o correo non confirmados (cada semana ou así) \ n \ r";
$ Mensaxe .= "http://www.shortlikeafox.com/simple-email-confirmation-example/index.php?confirm=yes&confirmCode = CONFIRMATION_CODE \ r $ \ n";
Conversas = $ e ($ a, $ asunto, $ mensaxe, $ header);

); echo ("O seu e-mail de confirmación enviado!");

)

)
/ / Se o usuario atopar o script de un enlace no seu e-mail, confirme a ....
[ 'confirm' ] == "yes" ){ elseif (@ $ _GET ['confirmar'] == "si") (
/ / Fai o confirmCode relativamente seguro para uso

[ 'confirmCode' ]); = $ ConfirmCode mysql_real_escape_string ($ @ ['confirmCode _GET']);

$ Query = "SELECT * FROM con_code emailConfirmationTable Where '$ confirmCode =' E is_confirmed = '0 '";
( "Error 234234" ); $ Resultado = mysql_query ($ query) or die ("Erro 234234");
nrows $ = mysql_num_rows ($ resultado);
1){ if ($ nrows == 1) (
$ Query = "Update Set emailConfirmationTable is_confirmed = '1 'con_code Where' $ 'confirmCode" =;
( "Config Error 222231231233 " ); $ Resultado = mysql_query ($ query) or die ("Erro de configuración 222.231.231.233");
if ($ resultado)
); echo ("e-mail confirmado!");

)
outro

); echo ("Non se puido verificar e-mail");

)

?>

É moi importante lembrar-se de validar a información que o usuario inserir en calquera forma. Eu non inclúe unha función de validación de correo-e ao enderezo anterior, pero un bo lugar para comezar é Henderson e-mail función de validación Cal atopou aquí.

Se queres ver o script en acción, pode facelo aquí.

Como inserir a man dun grupo de usuarios nun foro SMF Utilizando PHP

Posta en SMF (Simple Machine Forum) , php por ShortLikeAFox o 30 de xullo de 2008

Este tutorial presume que estea familiarizado cos meus post: Como inserir a man a un usuario do foro SMF Utilizando PHP .

Recentemente, enfrontouse ao reto de pasar de 800 ou así que as bandas a partir dun banco de datos nun foro SMF. Enfrontar algúns problemas ó facer o movemento que eu non cobre no primeiro post:

  1. Os nomes de banda non estaba garantido para ser seguro a un personaxe por personaxe moverse na base de datos SMF. Entón, algún tipo de nome que se modifica a función debería ser empregada.
  2. As bandas non teñen claves. Entón, algún tipo de xeración de contrasinal debe ser utilizada.

As etapas que eu fun para rexistrar todas as bandas do foro foi un pouco así:

Abre o banco de datos Band

para cada (Band) (

Xerar Contrasinal

Renomear Band co "nome" seguro

Agarre e xerar información necesaria para introducir o usuario

Insire Band en smf_members

Banda Enviar un correo-e con o contrasinal

)

Información que eu tiña dispoñible a partir da base de datos de banda que foi útil inclúen: bandName, bandEmail e bandWebsite

Aquí está a función de xeración de contrasinal que eu usei (blatently eliminado totallyphp.co.uk ):

createRandomPassword función () (

$ Chars = "abcdefghijkmnopqrstuvwxyz023456789";

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

$ I = 0;

$ Pass = ";



while ($ i <= 7) (

33; Nun = rand $ () 33%;

$ Tmp = substr ($ caracteres, $ nun, 1);

$ Pass = $ pass. $ Tmp;

$ I + +;

)

return $ pass;

)

O contrasinal creada aquí é relativamente débil, pero foi bo o suficiente para os meus propósitos. Calquera función de xeración de contrasinal funcionaría moi ben aquí. Eu escollín este porque sería máis doado para que os membros lembrar no caso de que optaron por non cambiar.

Como facer:

/ / Primeiro, ligue para a base de datos de banda
username = $ bandUsername ";
$ Host = bandHost ";
mypassword bandPassword $ = "";
db_name bandDatabase $ = "";

("cannot connect to server"); mysql_connect ("$ host", $ nome de usuario "," $ minhasenha ") or die (" Non se pode conectar ao servidor ");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("Non se pode seleccionar a DB");

/ / Agora, colle todas as bandas do banco de datos
$ Query = "SELECT * FROM allBands";
mysql_query bandas $ = ($ query) or die ("Erro de configuración 2222b);
$ UserRows = mysql_num_rows ($ pistas);

/ / Agora imos conectar ao SMF db
$ Host = smfhost "/ / nome do host
username = $ smfuser "; / username MySQL
mypassword smfpassword $ = "" / / contrasinal MySQL
db_name smfdatabase $ = "" / / nome da base de datos

("cannot connect to server"); mysql_connect ("$ host", $ nome de usuario "," $ minhasenha ") or die (" Non se pode conectar ao servidor ");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("Non se pode seleccionar a DB");

/ / $ Vaild_chars vai ser a matriz de caracteres permitidos para nomes de usuario. Decidir só permiten letras e números. Hai outros personaxes que poderían ser empregados que non ía causar un problema, pero por razóns de estilo, eu decidimos ir con só letras e números
valid_chars $ = vwxyz "abcdefghijklmnopqrstu 0 1 2 3 4 5 6 7 8 9";
valid_chars $ = explode ("", $ valid_chars);

/ / Agora necesitamos para facer un loop través de cada banda

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

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

/ / Extraer franxa de información
Extract ($ row);
/ / Crear un contrasinal para a banda
realPassword $ = createRandomPassword ();
/ / Eu escolla o eco bandname e contrasinal como parte do meu depuración e para que eu poida ver a funcionar como funciona
echo ("<br/> bandName - realPassword $ $");
NewBand $ = "";
/ / Para cada letra do nome da banda, imos mirar para ver se corresponde a un carácter válido de R $ valid_chars. É que non estamos indo a librar-se del e truncar o nome da banda
($bandName); $j ++ ){ for ($ j = 0; $ j <strlen ($ bandName); $ j + +) (

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

banda newBand newBand $ = $. [$ j];

)
/ / I echo o novo nome para a mesma razón que eu echo o antigo nome e contrasinal
echo ("- $ newBand");
/ / Temos o novo nome da banda .... Agora imos comezar buliding a información que necesitamos inserir no db ...
memberName = $ newBand;
realname = $ newBand / / eu definir o nome real eo nome do membro da mesma. As bandas poden muda-lo se queiran
emailAddress = $ bandEmail;
WebSiteUrl = $ bandWebsite / / Dende que eu teño bandas sitios do ben poderían inserir-los
websiteTitle = $ newBand;
$ Is_activated = 1;
$ ID_POST_GROUP = 4;
($memberName).$realPassword); //Password must be encrypted $ Contrasinal = sha1 (strtolower ($ memberName). RealPassword $) / / O contrasinal debe ser criptografada

/ / Asegúrese de que o seu non é un membro co mesmo nome na base de datos SMF. Non queremos que ninguén entra accidentalmente dúas veces
$ Query = "SELECT * FROM Where smf_members memberName = '$ memberName;
("Config Error 2222343242b"); $ Resultado = mysql_query ($ query) or die ("Erro de configuración 2222343242b");
nrows $ = mysql_num_rows ($ resultado);

/ / Se o nome do membro está nada
if ($ nrows> 0) ()

else (

/ / Se o usuario non está xa rexistrarte para os foros, facer e enviar un correo ....
$ Query = "insert into smf_members (memberName, realname, emailAddress, is_activated, ID_POST_GROUP, passwd, WebSiteUrl, websiteTitle) value ('$ memberName', '$ realname', '$ emailAddress', '$ is_activated', '$ ID_POST_GROUP' , '$ contrasinal', '$ WebSiteUrl', '$ websiteTitle') ";

("Config Error 2232 "); $ Resulta = mysql_query ($ query) or die ("Erro de configuración 2232");

/ / Agora debemos enviar un correo-e da banda
$ To = $ emailAddress;
$ Asunto = "O seu nome de usuario e contrasinal foro";

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

/ / A túa mensaxe
$ Mensaxe .= "O seu login e contrasinal están listadas abaixo. Pode cambiar ou en calquera momento. Se non queres participar nos nosos foros, iso non é problema. Just nunca log in e será como se nada tivese acontecido. \ r \ n ";
Contrasinal $ mensaxe .= "Nome: $ memberName: $ realPassword \ r \ n";

/ / Enviar correo-e
Conversas = $ e ($ a, $ asunto, $ mensaxe, $ header);
if ($ chats)

echo ("- Si!");
/ / Esta é a última parte do noso eco. O "-Si!" só será impreso un e-mail é enviado. Así, unha completa liña de impresión será coma este:
/ Strife Adam / - 4s6vsxag - AdamStrife - Yes!

)

)
)

Como inserir a man un usuario nun foro SMF Utilizando PHP

Posta en SMF (Simple Machine Forum) , php por ShortLikeAFox o 28 de xullo de 2008

Este exemplo específico para SMF 1.1.5. Non podo garantir que ha funcionar con calquera outra versión.

Entón corre Simple Machine Foro de Software e pretende introducir a man un usuario? Sen problemas. Sei que este problema parece ser moi específico, pero as ideas aquí expostas pode ser adaptado para outros tipos de foros e outros paquetes de software de base de datos orientado como o WordPress. Antes de entrarmos exactamente como facelo, imos dar un ollo a como Simple Machine Foros mantén rexistro de usuarios. Na base de datos SMF existe unha táboa chamada smf_members. O smf_members estrutura parecida con esta:

Campo Tipo Nulo

Clave Omisión Extra
ID_MEMBER MEDIUMINT (8) unsigned NO PRI NULL auto_increment
memberName varchar (80) NO MUL
dateRegistered int (10) unsigned NO MUL 0
artigos 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
instantMessages smallint (5) NO 0
Unreadmessages smallint (5) NO 0
buddy_list texto NO
pm_ignore_list texto NO
messageLabels texto NO
passwd varchar (64) NO
emailAddress TINYTEXT NO
personalText TINYTEXT NO
xénero tinyint (4) unsigned NO 0
data de nacemento data NO MUL 0001-01-01
websiteTitle TINYTEXT NO
WebSiteUrl TINYTEXT NO
localización 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
timeformat varchar (80) NO
sinatura texto NO
timeOffset flutuar 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 (tres), sen sinal 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

Fields é preciso prestar atención:

  • memberName - auto-explicativas.
  • dateRegistered - non é necesario, pero se non é cuberto a data rexistrada exhibe como 31 decembro de 1969. A data é gardada como un timestamp época. Non sei como calcular timestamps na súa cabeza? Sen problemas. Eu uso o xerador de libres atopados aquí .
  • realname - deben ser inseridos. Cando non estou seguro de que simplemente repetir memberName aquí.
  • emailAddress - auto-explicativas.
  • is_activated - Debe ser definido como xa que estamos a activar manualmente un membro.
  • ID_POST_GROUP - Eu non vou mentir. Non estou seguro que é iso, pero ela parece ser sempre axustado para 4. Entón .... Eu sempre define-la a 4. Non é a mellor forma de programa, pero o que podes facer?
  • passwd - O contrasinal que quere dar ao novo usuario. É imposible descubrir como entrar sen ollar a documentación do SMF. O código axeitado para o cifrado o contrasinal da base de datos SMF coma este:

($memberName).$password) $ Passwd = sha1 (strtolower ($ memberName). $ Contrasinal)

Na liña de código anterior, $ contrasinal é o contrasinal real do usuario.

Como facer:

/ / Primeiro, ligue para a base de datos SMF

$ Host = hostname "" / / nome do host
$ Username = "username" / / username MySQL
minhasenha = $ contrasinal "; / contrasinal MySQL
db_name $ username = "" / / nome da base de datos

("cannot connect to server"); mysql_connect ("$ host", $ nome de usuario "," $ minhasenha ") or die (" Non se pode conectar ao servidor ");
("cannot select DB"); mysql_select_db ("$ db_name") or die ("Non se pode seleccionar a DB");

memberName ironman $ = "";
realname $ = "Tony Stark";
emailAddress ironMan@ironMan.com $ = "";
$ Is_activated = 1;
$ ID_POST_GROUP = 4;

$ Contrasinal = "Tony1234";

($memberName).$password); $ Contrasinal = sha1 (strtolower ($ memberName). $ Contrasinal);

$ DateRegistered = 1216951200 / / 2008/07/25 02:00

$ Query = "insert into smf_members (memberName, realname, emailAddress, is_activated, ID_POST_GROUP, passwd, dateRegistered) value ('$ memberName', '$ realname', '$ emailAddress', '$ is_activated', '$ ID_POST_GROUP', ' $ contrasinal ',' $ dateRegistered ') ";
("SMF Error 101.234 "); $ Resultado = mysql_query ($ query) or die ("Erro SMF 101,234);

Isto é todo o que existe para ela!


«Entradas anterior Seguinte Páxina» Seguinte Páxina »