本文整理汇总了PHP中creer_uniqid函数的典型用法代码示例。如果您正苦于以下问题:PHP creer_uniqid函数的具体用法?PHP creer_uniqid怎么用?PHP creer_uniqid使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了creer_uniqid函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。
示例1: message_oubli
function message_oubli($email, $param)
{
$r = formulaires_oubli_mail($email);
if (is_array($r) AND $r[1]) {
include_spip('inc/acces'); # pour creer_uniqid
include_spip('inc/texte'); # pour corriger_typo
$cookie = creer_uniqid();
sql_updateq("spip_auteurs", array("cookie_oubli" => $cookie), "id_auteur=" . $r[1]['id_auteur']);
$nom = textebrut(corriger_typo($GLOBALS['meta']["nom_site"]));
$envoyer_mail = charger_fonction('envoyer_mail','inc');
if ($envoyer_mail($email,
("[$nom] " . _T('pass_oubli_mot')),
_T('pass_mail_passcookie',
array('nom_site_spip' => $nom,
'adresse_site' => url_de_base(),
'sendcookie' => generer_url_public('spip_pass',
"$param=$cookie", true)))) )
return _T('pass_recevoir_mail');
else
return _T('pass_erreur_probleme_technique');
}
return _T('pass_erreur_probleme_technique');
}
开发者ID:rhertzog,项目名称:lcs,代码行数:25,代码来源:oubli.php
示例2: formulaires_editer_profil_traiter_dist
function formulaires_editer_profil_traiter_dist($id_auteur, $retour = '')
{
$res = array();
$res['nom'] = _request('nom');
$res['prenom'] = _request('prenom');
$res['activite'] = _request('activite');
$res['email'] = _request('email');
$pass = _request('new_pass');
$pass2 = _request('new_pass2');
if ($pass) {
if ($pass == $pass2) {
include_spip('inc/acces');
$htpass = generer_htpass($pass);
$alea_actuel = creer_uniqid();
$alea_futur = creer_uniqid();
$new_pass = md5($alea_actuel . $pass);
$res['pass'] = $new_pass;
$res['htpass'] = $htpass;
$res['alea_actuel'] = $alea_actuel;
$res['alea_futur'] = $alea_futur;
$res['low_sec'] = '';
}
}
if ($id_auteur = intval($id_auteur)) {
sql_updateq('spip_auteurs', $res, "id_auteur={$id_auteur}");
$res['message_ok'] = _T('fraap_candidatures:form_profil_modifie');
} else {
$res['message_erreur'] = _T('fraap_candidatures:form_probleme');
}
return $res;
}
开发者ID:rougerose,项目名称:fraap_candidatures,代码行数:31,代码来源:editer_profil.php
示例3: cache_signature
function cache_signature(&$page)
{
if (!isset($GLOBALS['meta']['cache_signature'])) {
include_spip('inc/acces');
include_spip('auth/sha256.inc');
ecrire_meta('cache_signature', _nano_sha256($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SERVER_SIGNATURE"] . creer_uniqid()), 'non');
}
return crc32($GLOBALS['meta']['cache_signature'] . $page['texte']);
}
开发者ID:RadioCanut,项目名称:site-radiocanut,代码行数:9,代码来源:cacher.php
示例4: copie_locale
/**
* Cree au besoin la copie locale d'un fichier distant
*
*
* Prend en argument un chemin relatif au rep racine, ou une URL
* Renvoie un chemin relatif au rep racine, ou false
*
* http://doc.spip.org/@copie_locale
*
* @param $source
* @param string $mode
* 'test' - ne faire que tester
* 'auto' - charger au besoin
* 'modif' - Si deja present, ne charger que si If-Modified-Since
* 'force' - charger toujours (mettre a jour)
* @param string $local
* permet de specifier le nom du fichier local (stockage d'un cache par exemple, et non document IMG)
* @return bool|string
*/
function copie_locale($source, $mode='auto') {
// si c'est la protection de soi-meme, retourner le path
if ($mode !== 'force' AND preg_match(_REGEXP_COPIE_LOCALE, $source, $local)) {
$source = substr(_DIR_IMG,strlen(_DIR_RACINE)) . urldecode($local[1]);
return @file_exists($source) ? $source : false;
}
$local = fichier_copie_locale($source);
$localrac = _DIR_RACINE.$local;
$t = ($mode=='force') ? false : @file_exists($localrac);
// test d'existence du fichier
if ($mode=='test') return $t ? $local : '';
// si $local = '' c'est un fichier refuse par fichier_copie_locale(),
// par exemple un fichier qui ne figure pas dans nos documents ;
// dans ce cas on n'essaie pas de le telecharger pour ensuite echouer
if (!$local) return false;
// sinon voir si on doit/peut le telecharger
if ($local==$source OR !preg_match(',^\w+://,', $source))
return $local;
if ($mode=='modif' OR !$t){
// passer par un fichier temporaire unique pour gerer les echecs en cours de recuperation
// et des eventuelles recuperations concurantes
include_spip("inc/acces");
$localractmp = "$localrac.".creer_uniqid().".tmp";
$res = recuperer_page($source, $localractmp, false, _COPIE_LOCALE_MAX_SIZE, '', '', false, $t ? filemtime($localrac) : '');
if ($res) {
// si OK on supprime l'ancien fichier et on renomme
spip_log("copie_locale : recuperation $source sur $localractmp taille $res OK, renommage en $localrac");
spip_unlink($localrac);
@rename($localractmp, $localrac);
} else {
// sinon on supprime le fichier temporaire qui a echoue et qui est sans doute corrompu...
spip_log("copie_locale : Echec recuperation $source sur $localractmp, fichier supprime",_LOG_INFO_IMPORTANTE);
spip_unlink($localractmp);
}
if (!$res) return $t ? $local : false;
// pour une eventuelle indexation
pipeline('post_edition',
array(
'args' => array(
'operation' => 'copie_locale',
'source' => $source,
'fichier' => $local
),
'data' => null
)
);
}
return $local;
}
开发者ID:rhertzog,项目名称:lcs,代码行数:75,代码来源:distant.php
示例5: copie_locale
/**
* Cree au besoin la copie locale d'un fichier distant
*
*
* Prend en argument un chemin relatif au rep racine, ou une URL
* Renvoie un chemin relatif au rep racine, ou false
*
* http://doc.spip.org/@copie_locale
*
* @param $source
* @param string $mode
* 'test' - ne faire que tester
* 'auto' - charger au besoin
* 'modif' - Si deja present, ne charger que si If-Modified-Since
* 'force' - charger toujours (mettre a jour)
* @param string $local
* permet de specifier le nom du fichier local (stockage d'un cache par exemple, et non document IMG)
* @return bool|string
*/
function copie_locale($source, $mode = 'auto', $local = null)
{
// si c'est la protection de soi-meme
$reg = ',' . $GLOBALS['meta']['adresse_site'] . "/?spip.php[?]action=acceder_document.*file=(.*)\$,";
if (preg_match($reg, $source, $m)) {
return substr(_DIR_IMG, strlen(_DIR_RACINE)) . urldecode($m[1]);
}
if (is_null($local)) {
$local = fichier_copie_locale($source);
} else {
if (_DIR_RACINE and strncmp(_DIR_RACINE, $local, strlen(_DIR_RACINE)) == 0) {
$local = substr($local, strlen(_DIR_RACINE));
}
}
$localrac = _DIR_RACINE . $local;
$t = $mode == 'force' ? false : @file_exists($localrac);
// test d'existence du fichier
if ($mode == 'test') {
return $t ? $local : '';
}
// si $local = '' c'est un fichier refuse par fichier_copie_locale(),
// par exemple un fichier qui ne figure pas dans nos documents ;
// dans ce cas on n'essaie pas de le telecharger pour ensuite echouer
if (!$local) {
return false;
}
// sinon voir si on doit/peut le telecharger
if ($local == $source or !preg_match(',^\\w+://,', $source)) {
return $local;
}
if ($mode == 'modif' or !$t) {
// passer par un fichier temporaire unique pour gerer les echecs en cours de recuperation
// et des eventuelles recuperations concurantes
include_spip("inc/acces");
$localractmp = "{$localrac}." . creer_uniqid() . ".tmp";
$res = recuperer_page($source, $localractmp, false, _COPIE_LOCALE_MAX_SIZE, '', '', false, $t ? filemtime($localrac) : '');
if ($res) {
// si OK on supprime l'ancien fichier et on renomme
spip_log("copie_locale : recuperation {$source} sur {$localractmp} taille {$res} OK, renommage en {$localrac}");
spip_unlink($localrac);
@rename($localractmp, $localrac);
} else {
// sinon on supprime le fichier temporaire qui a echoue et qui est sans doute corrompu...
spip_log("copie_locale : Echec recuperation {$source} sur {$localractmp}, fichier supprime", _LOG_INFO_IMPORTANTE);
spip_unlink($localractmp);
}
if (!$res) {
return $t ? $local : false;
}
// pour une eventuelle indexation
pipeline('post_edition', array('args' => array('operation' => 'copie_locale', 'source' => $source, 'fichier' => $local), 'data' => null));
}
return $local;
}
开发者ID:nursit,项目名称:SPIP,代码行数:73,代码来源:distant.php
示例6: renouvelle_alea
function renouvelle_alea() {
if (!isset($GLOBALS['meta']['alea_ephemere'])){
include_spip('base/abstract_sql');
$GLOBALS['meta']['alea_ephemere'] = sql_getfetsel('valeur', 'spip_meta', "nom='alea_ephemere'");
}
ecrire_meta('alea_ephemere_ancien', @$GLOBALS['meta']['alea_ephemere'], 'non');
$GLOBALS['meta']['alea_ephemere'] = md5(creer_uniqid());
ecrire_meta('alea_ephemere', $GLOBALS['meta']['alea_ephemere'], 'non');
ecrire_meta('alea_ephemere_date', time(), 'non');
spip_log("renouvellement de l'alea_ephemere");
}
开发者ID:rhertzog,项目名称:lcs,代码行数:11,代码来源:acces.php
示例7: formulaires_register_traiter_dist
function formulaires_register_traiter_dist()
{
$login = _request('login');
$name = _request('name');
$password = _request('password');
$re_password = _request('re_password');
$email = _request('email');
include_spip('inc/acces');
include_spip('auth/sha256.inc');
$alea_actuel = creer_uniqid();
$alea_futur = creer_uniqid();
$pass = _nano_sha256($alea_actuel . $password);
$sql = 'Insert into spip_auteurs (nom,email,login,pass,htpass,statut,alea_actuel,alea_futur)values("' . $name . '","' . $email . '","' . $login . '","' . $pass . '","' . generer_htpass($password) . '","6forum","' . $alea_actuel . '","' . $alea_futur . '")';
sql_query($sql);
$id_user = mysql_insert_id();
ppr('Новый пользователь с номером : ' . $id_user);
}
开发者ID:foobar64,项目名称:spip-ecatalogue,代码行数:17,代码来源:register.php
示例8: ecrire_migration_status
/**
* Ecrire le status de migration
* @param string $direction
* @param bool|array $raz
* @return array
*/
function ecrire_migration_status($direction, $raz = false){
if (!in_array($direction,array('depuis','vers')))
return false;
$meta = 'migration_'.$direction.'_status';
$file = _DIR_TMP.$meta.".txt";
if ($raz===true) {
spip_unlink($file);
return false;
}
elseif(is_array($raz)){
$s = $raz;
ecrire_fichier($file,serialize($s));
}
elseif (!$s = lire_migration_status($direction)){
include_spip('inc/acces');
$s = array(
'status'=>'init',
'timestamp'=>time(),
'key'=> substr(md5(creer_uniqid()),0,8),
);
ecrire_fichier($file,serialize($s));
}
return $s;
}
开发者ID:nursit,项目名称:Migration,代码行数:30,代码来源:migration.php
示例9: auteur_attribuer_jeton
/**
* Attribuer un jeton temporaire pour un auteur
* en assurant l'unicite du jeton
* @param int $id_auteur
* @return string
*/
function auteur_attribuer_jeton($id_auteur)
{
include_spip('inc/acces');
// s'assurer de l'unicite du jeton pour le couple (email,cookie)
do {
$jeton = creer_uniqid();
sql_updateq("spip_auteurs", array("cookie_oubli" => $jeton), "id_auteur=" . intval($id_auteur));
} while (sql_countsel("spip_auteurs", "cookie_oubli=" . sql_quote($jeton)) > 1);
return $jeton;
}
开发者ID:genma,项目名称:spip_ynh,代码行数:16,代码来源:inscrire_auteur.php
示例10: recuperer_body
function recuperer_body($f, $taille_max = _INC_DISTANT_MAX_SIZE, $fichier = '')
{
$taille = 0;
$result = '';
$fp = false;
if ($fichier) {
include_spip("inc/acces");
$tmpfile = "{$fichier}." . creer_uniqid() . ".tmp";
$fp = spip_fopen_lock($tmpfile, 'w', LOCK_EX);
if (!$fp and file_exists($fichier)) {
return filesize($fichier);
}
if (!$fp) {
return false;
}
$result = 0;
// on renvoie la taille du fichier
}
while (!feof($f) and $taille < $taille_max) {
$res = fread($f, 16384);
$taille += strlen($res);
if ($fp) {
fwrite($fp, $res);
$result = $taille;
} else {
$result .= $res;
}
}
if ($fp) {
spip_fclose_unlock($fp);
spip_unlink($fichier);
@rename($tmpfile, $fichier);
if (!file_exists($fichier)) {
return false;
}
}
return $result;
}
开发者ID:loorenzooo,项目名称:aslfc,代码行数:38,代码来源:distant.php
示例11: exec_spiplistes_courrier_edit
function exec_spiplistes_courrier_edit(){
include_spip('inc/barre');
include_spip('inc/documents');
include_spip('base/spiplistes_tables');
include_spip('inc/spiplistes_api');
include_spip('inc/spiplistes_api_presentation');
include_spip('inc/spiplistes_dater_envoi');
include_spip('inc/spiplistes_api_courrier');
include_spip('public/assembler');
include_spip('inc/spiplistes_naviguer_paniers');
global $connect_statut
, $connect_toutes_rubriques
, $connect_id_auteur
, $spip_ecran
, $compteur_block
;
$eol = "\n";
$id_temp = false;
$type = _request('type');
$id_courrier = intval(_request('id_courrier'));
foreach(array('btn_courrier_apercu') as $key) {
$$key = _request($key);
}
if($id_courrier > 0) {
///////////////////////////
// Edition /modification d'un courrier
$sql_select_array = array('titre','texte','message_texte','type','statut','id_auteur');
if($row = spiplistes_courriers_premier($id_courrier, $sql_select_array)) {
foreach($sql_select_array as $key) {
$$key = $row[$key];
}
$titre = entites_html($titre);
$texte = entites_html($texte);
}
else {
$id_courrier = false;
}
}
// n'existe pas encore ?
// placer un marqueur pour les documents joints
else {
$id_temp = 0-intval(substr(creer_uniqid(),0,5));
}
// l'edition du courrier est reservee aux super-admins
// ou aux admin createur du courrier
$flag_editable = (($connect_statut == "0minirezo")
&& ($connect_toutes_rubriques || ($connect_id_auteur == $id_auteur) || !$id_courrier));
if($flag_editable) {
if(!$id_courrier) {
// si pas de ID courrier, c'est une creation
$statut = _SPIPLISTES_COURRIER_STATUT_REDAC;
$type = _SPIPLISTES_COURRIER_TYPE_NEWSLETTER;
$new = 'oui';
$titre = _T('spiplistes:Nouveau_courrier');
$clearonfocus = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
}
else {
$clearonfocus = "";
}
$gros_bouton_retour =
($id_courrier)
? icone(
_T('spiplistes:retour_link')
, generer_url_ecrire(_SPIPLISTES_EXEC_COURRIER_GERER, "id_courrier=$id_courrier")
, spiplistes_items_get_item('icon', $statut)
, "rien.gif"
, ""
, false
)
: ""
;
$boite_documents = afficher_documents_colonne(
($id_courrier ? $id_courrier : $id_temp )
, 'courrier');
}
////////////////////////////////////
// PAGE CONTENU
////////////////////////////////////
$titre_page = _T('spiplistes:edition_du_courrier');
// Permet entre autres d'ajouter les classes a' la page : <body class='$rubrique $sous_rubrique'>
$rubrique = _SPIPLISTES_PREFIX;
$sous_rubrique = "courrier_edit";
$commencer_page = charger_fonction('commencer_page', 'inc');
echo($commencer_page(_T('spiplistes:spiplistes') . " - " . $titre_page, $rubrique, $sous_rubrique));
if(!$flag_editable) {
die (spiplistes_terminer_page_non_autorisee() . fin_page());
}
//.........这里部分代码省略.........
开发者ID:rhertzog,项目名称:lcs,代码行数:101,代码来源:spiplistes_courrier_edit.php
示例12: auth_spip_modifier_pass
/**
* Modifier le mot de passe de l'auteur sur le serveur concerne
* en s'occupant du hash et companie
* @param string $login
* @param string $new_pass
* @param int $id_auteur
* @param string $serveur
* @return bool
*/
function auth_spip_modifier_pass($login, $new_pass, $id_auteur, $serveur = '')
{
if (is_null($new_pass) or auth_spip_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') {
return false;
}
if (!($id_auteur = intval($id_auteur)) or !sql_fetsel('login', 'spip_auteurs', 'id_auteur=' . intval($id_auteur), '', '', '', '', $serveur)) {
return false;
}
$c = array();
include_spip('inc/acces');
include_spip('auth/sha256.inc');
$htpass = generer_htpass($new_pass);
$alea_actuel = creer_uniqid();
$alea_futur = creer_uniqid();
$pass = _nano_sha256($alea_actuel . $new_pass);
$c['pass'] = $pass;
$c['htpass'] = $htpass;
$c['alea_actuel'] = $alea_actuel;
$c['alea_futur'] = $alea_futur;
$c['low_sec'] = '';
include_spip('action/editer_auteur');
auteur_modifier($id_auteur, $c, true);
// manque la gestion de $serveur
return true;
// on a bien modifie le pass
}
开发者ID:nursit,项目名称:SPIP,代码行数:35,代码来源:spip.php
示例13: install_etape_3b_dist
function install_etape_3b_dist()
{
$login = _request('login');
$email = _request('email');
$nom = _request('nom');
$pass = _request('pass');
$pass_verif = _request('pass_verif');
$server_db = defined('_INSTALL_SERVER_DB') ? _INSTALL_SERVER_DB : _request('server_db');
if (!defined('_PASS_LONGUEUR_MINI')) {
define('_PASS_LONGUEUR_MINI', 6);
}
if (!defined('_LOGIN_TROP_COURT')) {
define('_LOGIN_TROP_COURT', 4);
}
if ($login) {
$echec = $pass != $pass_verif ? _T('info_passes_identiques') : (strlen($pass) < _PASS_LONGUEUR_MINI ? _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI)) : (strlen($login) < _LOGIN_TROP_COURT ? _T('info_login_trop_court') : ''));
include_spip('inc/filtres');
if (!$echec and $email and !email_valide($email)) {
$echec = _T('form_email_non_valide');
}
if ($echec) {
echo minipres('AUTO', info_progression_etape(3, 'etape_', 'install/', true) . "<div class='error'><h3>{$echec}</h3>\n" . "<p>" . _T('avis_connexion_echec_2') . "</p>" . "</div>");
exit;
}
}
if (@file_exists(_FILE_CHMOD_TMP)) {
include _FILE_CHMOD_TMP;
} else {
redirige_url_ecrire('install');
}
if (!@file_exists(_FILE_CONNECT_TMP)) {
redirige_url_ecrire('install');
}
# maintenant on connait le vrai charset du site s'il est deja configure
# sinon par defaut lire_meta reglera _DEFAULT_CHARSET
# (les donnees arrivent de toute facon postees en _DEFAULT_CHARSET)
lire_metas();
if ($login) {
include_spip('inc/charsets');
$nom = importer_charset($nom, _DEFAULT_CHARSET);
$login = importer_charset($login, _DEFAULT_CHARSET);
$email = importer_charset($email, _DEFAULT_CHARSET);
# pour le passwd, bizarrement il faut le convertir comme s'il avait
# ete tape en iso-8859-1 ; car c'est en fait ce que voit md5.js
$pass = unicode2charset(utf_8_to_unicode($pass), 'iso-8859-1');
include_spip('auth/sha256.inc');
include_spip('inc/acces');
$htpass = generer_htpass($pass);
$alea_actuel = creer_uniqid();
$alea_futur = creer_uniqid();
$shapass = _nano_sha256($alea_actuel . $pass);
// prelablement, creer le champ webmestre si il n'existe pas (install neuve
// sur une vieille base
$t = sql_showtable("spip_auteurs", true);
if (!isset($t['field']['webmestre'])) {
@sql_alter("TABLE spip_auteurs ADD webmestre varchar(3) DEFAULT 'non' NOT NULL");
}
$id_auteur = sql_getfetsel("id_auteur", "spip_auteurs", "login=" . sql_quote($login));
if ($id_auteur !== null) {
sql_updateq('spip_auteurs', array("nom" => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'htpass' => $htpass, 'statut' => '0minirezo'), "id_auteur={$id_auteur}");
} else {
$id_auteur = sql_insertq('spip_auteurs', array('nom' => $nom, 'email' => $email, 'login' => $login, 'pass' => $shapass, 'htpass' => $htpass, 'alea_actuel' => $alea_actuel, 'alea_futur' => $alea_futur, 'statut' => '0minirezo'));
}
// le passer webmestre separrement du reste, au cas ou l'alter n'aurait pas fonctionne
@sql_updateq('spip_auteurs', array('webmestre' => 'oui'), "id_auteur={$id_auteur}");
// inserer email comme email webmaster principal
// (sauf s'il est vide: cas de la re-installation)
if ($email) {
ecrire_meta('email_webmaster', $email);
}
// Connecter directement celui qui vient de (re)donner son login
// mais sans cookie d'admin ni connexion longue
include_spip('inc/auth');
if (!($auteur = auth_identifier_login($login, $pass)) or !auth_loger($auteur, true)) {
spip_log("login automatique impossible {$auth_spip} {$session}" . count($row));
}
}
// installer les metas
$config = charger_fonction('config', 'inc');
$config();
// activer les plugins
// leur installation ne peut pas se faire sur le meme hit, il faudra donc
// poursuivre au hit suivant
include_spip('inc/plugin');
actualise_plugins_actifs();
include_spip('inc/distant');
redirige_par_entete(parametre_url(self(), 'etape', '4', '&'));
}
开发者ID:xablen,项目名称:Semaine14_SPIP_test,代码行数:88,代码来源:etape_3b.php
示例14: protege_js_modeles
function protege_js_modeles($t)
{
if (isset($GLOBALS['visiteur_session'])) {
if (preg_match_all(',<script.*?($|</script.),isS', $t, $r, PREG_SET_ORDER)) {
if (!defined('_PROTEGE_JS_MODELES')) {
include_spip('inc/acces');
define('_PROTEGE_JS_MODELES', creer_uniqid());
}
foreach ($r as $regs) {
$t = str_replace($regs[0], code_echappement($regs[0], 'javascript' . _PROTEGE_JS_MODELES), $t);
}
}
if (preg_match_all(',<\\?php.*?($|\\?' . '>),isS', $t, $r, PREG_SET_ORDER)) {
if (!defined('_PROTEGE_PHP_MODELES')) {
include_spip('inc/acces');
define('_PROTEGE_PHP_MODELES', creer_uniqid());
}
foreach ($r as $regs) {
$t = str_replace($regs[0], code_echappement($regs[0], 'php' . _PROTEGE_PHP_MODELES), $t);
}
}
}
return $t;
}
开发者ID:loorenzooo,项目名称:aslfc,代码行数:24,代码来源:texte_mini.php
示例15: auth_spip_modifier_pass
function auth_spip_modifier_pass($login, $new_pass, $id_auteur, $serveur=''){
if (is_null($new_pass) OR auth_spip_verifier_pass($login, $new_pass,$id_auteur,$serveur)!='')
return false;
if (!$id_auteur = intval($id_auteur)
OR !$auteur = sql_fetsel('login','spip_auteurs','id_auteur='.intval($id_auteur),'','','','',$serveur))
return false;
$c = array();
include_spip('inc/acces');
include_spip('auth/sha256.inc');
$htpass = generer_htpass($new_pass);
$alea_actuel = creer_uniqid();
$alea_futur = creer_uniqid();
$pass = _nano_sha256($alea_actuel.$new_pass);
$c['pass'] = $pass;
$c['htpass'] = $htpass;
$c['alea_actuel'] = $alea_actuel;
$c['alea_futur'] = $alea_futur;
$c['low_sec'] = '';
include_spip('inc/modifier');
revision_auteur($id_auteur, $c); // manque la gestion de $serveur
}
开发者ID:rhertzog,项目名称:lcs,代码行数:25,代码来源:spip.php
示例16: secret_du_site
/**
* Renvoyer le secret du site, et le generer si il n'existe pas encore
* Le secret du site doit rester aussi secret que possible, et est eternel
* On ne doit pas l'exporter
*
* http://doc.spip.org/@secret_du_site
*
* @return string
*/
function secret_du_site()
{
if (!isset($GLOBALS['meta']['secret_du_site'])) {
include_spip('base/abstract_sql');
$GLOBALS['meta']['secret_du_site'] = sql_getfetsel('valeur', 'spip_meta', "nom='secret_du_site'");
}
if (!isset($GLOBALS['meta']['secret_du_site']) or strlen($GLOBALS['meta']['secret_du_site']) < 64) {
include_spip('inc/acces');
include_spip('auth/sha256.inc');
ecrire_meta('secret_du_site', _nano_sha256($_SERVER["DOCUMENT_ROOT"] . $_SERVER["SERVER_SIGNATURE"] . creer_uniqid()), 'non');
lire_metas();
// au cas ou ecrire_meta() ne fonctionne pas
}
return $GLOBALS['meta']['secret_du_site'];
}
开发者ID:nursit,项目名称:SPIP,代码行数:24,代码来源:securiser_action.php
示例17: ecrire_fichier
/**
* Écrit un fichier de manière un peu sûre
*
* Cette écriture s’exécute de façon sécurisée en posant un verrou sur
* le fichier avant sa modification. Les fichiers .gz sont compressés.
*
* @uses raler_fichier() Si le fichier n'a pu peut être écrit
* @see lire_fichier()
* @see supprimer_fichier()
*
* @param string $fichier
* Chemin du fichier
* @param string $contenu
* Contenu à écrire
* @param bool $ignorer_echec
* - true pour ne pas raler en cas d'erreur
* - false affichera un message si on est webmestre
* @param bool $truncate
* Écriture avec troncation ?
* @return bool
* - true si l’écriture s’est déroulée sans problème.
**/
function ecrire_fichier($fichier, $contenu, $ignorer_echec = false, $truncate = true)
{
#spip_timer('ecrire_fichier');
// verrouiller le fichier destination
if ($fp = spip_fopen_lock($fichier, 'a', LOCK_EX)) {
// ecrire les donnees, compressees le cas echeant
// (on ouvre un nouveau pointeur sur le fichier, ce qui a l'avantage
// de le recreer si le locker qui nous precede l'avait supprime...)
if (substr($fichier, -3) == '.gz') {
$contenu = gzencode($contenu);
}
// si c'est une ecriture avec troncation , on fait plutot une ecriture complete a cote suivie unlink+rename
// pour etre sur d'avoir une operation atomique
// y compris en NFS : http://www.ietf.org/rfc/rfc1094.txt
// sauf sous wintruc ou ca ne marche pas
$ok = false;
if ($truncate and _OS_SERVEUR != 'windows') {
if (!function_exists('creer_uniqid')) {
include_spip('inc/acces');
}
$id = creer_uniqid();
// on ouvre un pointeur sur un fichier temporaire en ecriture +raz
if ($fp2 = spip_fopen_lock("{$fichier}.{$id}", 'w', LOCK_EX)) {
$s = @fputs($fp2, $contenu, $a = strlen($contenu));
$ok = $s == $a;
spip_fclose_unlock($fp2);
spip_fclose_unlock($fp);
// unlink direct et pas spip_unlink car on avait deja le verrou
// a priori pas besoin car rename ecrase la cible
// @unlink($fichier);
// le rename aussitot, atomique quand on est pas sous windows
// au pire on arrive en second en cas de concourance, et le rename echoue
// --> on a la version de l'autre process qui doit etre identique
@rename("{$fichier}.{$id}", $fichier);
// precaution en cas d'echec du rename
if (!_TEST_FILE_EXISTS or @file_exists("{$fichier}.{$id}")) {
@unlink("{$fichier}.{$id}");
}
if ($ok) {
$ok = file_exists($fichier);
}
} else {
spip_fclose_unlock($fp);
}
}
// sinon ou si methode precedente a echoueee
// on se rabat sur la methode ancienne
if (!$ok) {
// ici on est en ajout ou sous windows, cas desespere
if ($truncate) {
@ftruncate($fp, 0);
}
$s = @fputs($fp, $contenu, $a = strlen($contenu));
$ok = $s == $a;
spip_fclose_unlock($fp);
}
// liberer le verrou et fermer le fichier
@chmod($fichier, _SPIP_CHMOD & 0666);
if ($ok) {
if (strpos($fichier, ".php") !== false) {
spip_clear_opcode_cache(realpath($fichier));
}
return $ok;
}
}
if (!$ignorer_echec) {
include_spip('inc/autoriser');
if (autoriser('chargerftp')) {
raler_fichier($fichier);
}
spip_unlink($fichier);
}
spip_log("Ecriture fichier {$fichier} impossible", _LOG_INFO_IMPORTANTE);
return false;
}
开发者ID:RadioCanut,项目名称:site-radiocanut,代码行数:97,代码来源:flock.php
示例18: galettonuts_synchroniser
/**
* Synchroniser les utilisateurs Galette vers Spip.
*
* @param boolean $forcer Forcer la synchronisation.
* @return int Retourne en cas de réussite le nombre de fiches mis à jour ;
* _ 0 lorsqu'une erreur inconnue est survenue ;
* _ -1 si la synchronisation a échouée ;
* _ -2 lorsque des erreurs sont survenues lors de la connexion à la BDD ;
* _ -10 si la synchronisation est inutile.
**/
function galettonuts_synchroniser($forcer = false)
{
// Lecture de la configuration
if (!class_exists('L2_Spip_Plugin_Metas')) {
include_spip('lib/L2/Spip/Plugin/Metas.class');
}
$config = new L2_Spip_Plugin_Metas('galettonuts_config');
// Connexion à la base Galette
$link = galettonuts_galette_db($config->lire('adresse_db'), $config->lire('login_db'), $config->lire('pass_db'), $config->lire('choix_db'));
if (!$link) {
spip_log('cron: Galettonuts, echec de connexion a la bdd de galette');
return -2;
}
$synchro = new L2_Spip_Plugin_Metas('galettonuts_synchro');
// La synchronisation est inutile.
if (!$forcer && !is_null($synchro->lire('maj')) && galettonuts_a_jour($synchro->lire('maj'), $config->lire('prefix_db'), $link)) {
return -10;
} else {
// Compteur d'utilisateurs traités
$compteur = 0;
// Tableau associatif zones/auteurs
$ids = array();
$maintenant = time();
// Récupération des adhérents Galette
$req = "SELECT `id_adh` AS `id`, `nom_adh` AS `nom`, `prenom_adh` AS `prenom`, `activite_adh` AS `actif`, " . "`login_adh` AS `login`, `mdp_adh` AS `pass`, `email_adh` AS `email` " . "FROM `" . $config->lire('prefix_db') . "adherents` WHERE 1;";
$res = @mysql_query($req, $link);
// Pour chaque adhérent de galette
while ($adh = @mysql_fetch_assoc($res)) {
include_spip('inc/acces');
include_spip('inc/charsets');
// Formatage des informations de l'auteur à destination de Spip
$login = unicode2charset(charset2unicode($adh['login'], 'iso-8859-15', 'forcer'));
$email = unicode2charset(charset2unicode($adh['email'], 'iso-8859-15', 'forcer'));
$nom = unicode2charset(charset2unicode(ucfirst($adh['prenom']) . ' ' . ucfirst($adh['nom']), 'iso-8859-15', 'forcer'));
$alea_actuel = creer_uniqid();
$alea_futur = creer_uniqid();
$pass = $adh['pass'];
$htpass = generer_htpass($pass);
$mdpass = md5($alea_actuel . $pass);
// Récupération de l'identifiant de l'auteur Spip, s'il existe
$res2 = spip_query("SELECT `id_auteur` FROM `spip_galettonuts` WHERE `id_adh` = '{$adh['id']}';");
if (spip_mysql_count($res2)) {
$id_auteur = (int) @mysql_result($res2, 0);
} else {
$id_auteur = null;
}
// Mise à jour de l'auteur Spip
if ($id_auteur) {
$req = "UPDATE `spip_auteurs` SET " . "`nom` = " . _q($nom) . ", `email` = " . _q($email) . ", `login` = " . _q($login) . ", `pass` = " . _q($mdpass) . ", `htpass` = " . _q($htpass) . ", `alea_actuel` = " . _q($alea_actuel) . ", `alea_futur` = " . _q($alea_futur);
if (1 != $adh['actif']) {
$req .= ", `statut` = " . _q('5poubelle');
}
$req .= ", `maj` = NOW()" . " WHERE `id_auteur` = " . _q($id_auteur);
spip_query($req);
} else {
$statut = 1 == $adh['actif'] ? '6forum' : '5poubelle';
$req = "INSERT INTO `spip_auteurs` (`nom`, `email`, `login`, `pass`, `htpass`, `alea_actuel`, `alea_futur`, `statut`) " . "VALUES (" . _q($nom) . ', ' . _q($email) . ', ' . _q($login) . ', ' . _q($mdpass) . ', ' . _q($htpass) . ', ' . _q($alea_actuel) . ', ' . _q($alea_futur) . ', ' . _q($statut) . ");";
spip_query($req);
unset($req);
// Puisque la colonne id_auteur de la table spip_auteurs est
// de type BIGINT, on ne peut utiliser mysql_insert_id() de PHP.
$id_auteur = @mysql_result(spip_query("SELECT LAST_INSERT_ID();"), 0);
$req = "INSERT INTO `spip_galettonuts` (`id_auteur`, `id_adh`) VALUES (" . _q($id_auteur) . ', ' . _q($adh['id']) . ');';
spip_query($req);
}
spip_free_result($res2);
// Hop, un utilisateur de synchronisé en plus
++$compteur;
// Dans le cas où le plugin Accès Restreint est présent, on stocke
// les identifiants des auteurs fraichement synchronisés associés
// à une/des zone(s) définie lors de la configuration de Galettonuts
if ($zones = $config->lire('zones')) {
$ids[$id_auteur] = $zones;
unset($zones);
}
}
// while
// La synchronisation est complète, on le sauvegarde
$synchro->ajouter(array('maj' => $maintenant), true);
// Association de zones aux auteurs synchronisés
if (0 < count($ids)) {
galettonuts_associer_zones($ids);
}
return $compteur;
}
}
开发者ID:piouPiouM,项目名称:galettonuts,代码行数:96,代码来源:galettonuts_fonctions.php
示例19: spiplistes_formulaire_abonnement
//.........这里部分代码省略.........
{
// si l'abonne existe deja mais pas d'action demandee,
// affiche formulaire complet
//if($row = sql_fetch(
if ($row =
spiplistes_auteurs_auteur_select ('id_auteur,login,nom,statut,lang', 'email='.sql_quote($abonne['email']))
) {
$abonne['id_auteur'] = intval($row['id_auteur']);
$abonne['statut'] = $row['statut'];
$abonne['login'] = $row['login'];
$abonne['nom'] = $row['nom'];
$abonne['lang'] = $row['lang'];
$abonne['format'] =
($f = spiplistes_format_abo_demande($abonne['id_auteur']))
? $f
: 'texte'
;
if($abonne['statut'] == '5poubelle')
{
$reponse_formulaire = _T('form_forum_access_refuse');
}
// si encore nouveau, c'est qu'il ne s'est jamais identifie'
else if($abonne['statut'] == 'nouveau')
{
// le supprimer. Il sera re-cree plus loin
spiplistes_auteurs_auteur_delete('id_auteur='.sql_quote($abonne['id_auteur']));
$abonne['id_auteur'] = false;
}
else {
// demande de modifier l'abonnement ? envoie le cookie de relance par mail
spiplistes_auteurs_cookie_oubli_updateq($abonne['cookie_oubli'] = creer_uniqid(), $abonne['email']);
$objet_email = _T('spiplistes:abonnement_titre_mail');
$texte_email = spiplistes_texte_inventaire_abos($abonne['id_auteur'], $type_abo, $nom_site_spip);
$contexte = array('titre' => $objet_email);
$id_abonne = $abonne['id_auteur'];
}
}
// l'adresse mail n'existe pas dans la base.
else
{
$abonne['login'] = spiplistes_login_from_email($abonne['email']);
$abonne['nom'] =
(($acces_membres == 'non') || empty($nom_inscription_))
? ucfirst($abonne['login'])
: $nom_inscription_
;
// ajouter l'abonne
$pass = creer_pass_aleatoire(8, $abonne['email']);
$abonne['zepass'] = $pass;
$abonne['mdpass'] = md5($pass);
$abonne['htpass'] = generer_htpass($pass);
$abonne['cookie_oubli'] = creer_uniqid();
$abonne['statut'] = ($inscription_redacteur == 'oui') ? 'nouveau' : '6forum';
// format d'envoi par defaut pour le premier envoi de confirmation
开发者ID:rhertzog,项目名称:lcs,代码行数:67,代码来源:formulaire_abonnement.php
示例20: spip_nfsunlock
/**
* Unlock an nfslock()ed file
*
* This can get tricky because the lock may have expired (perhaps even
* during a process that should be "atomic"). We have to make sure we don't
* unlock some other process' lock, and return a panic code if we think our
* lock file has been broken illegally. What's done in reaction to that panic
* (of anything) is up to the caller. See the comments on nfslock()!
*
* args: path = path to directory of lock file (/net/u/1/a/alexis/.mailspool)
* namelock = file name of lock file (alexis.lock)
* max_age = age of lockfile, in seconds, after which the lock is stale.
* stale locks are always broken. Defaults to DEFAULT_LOCKTIME
* if zero. Panix mail locks go stale at 300 seconds, the default.
* birth = time the lock was created (as returned by nfslock()).
*
* Returns NFSL_OK if successful, NFSL_LOST if the lock has been lost
* legitimately (because more than max_age has passed since the lock was
* created), and NFSL_STOLEN if it's been tampered with illegally (i.e.
* while this program is within the expiry period). Returns NFSL_SYSF if
* another system failure prevents it from even trying to unlock the file.
*
* Note that for many programs, a return code of NFSL_LOST or NFSL_STOLEN is
* equal
|
请发表评论