本文整理汇总了PHP中generer_url_action函数的典型用法代码示例。如果您正苦于以下问题:PHP generer_url_action函数的具体用法?PHP generer_url_action怎么用?PHP generer_url_action使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了generer_url_action函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的PHP代码示例。
示例1: zencoder_new_job
/**
* Envoi une requette de conversion a zencoder.
*
* @param int $id_document l'id du document original
* @param int $id_objet
*/
function zencoder_new_job($id_document)
{
spip_log('start zencoder_new_job', 'zencoder');
$cwd = getcwd();
chdir(realpath(_DIR_ZENCODER_LIB));
require_once "Services/Zencoder.php";
chdir($cwd);
include_spip('inc/config');
include_spip('inc/utils');
$api_key = lire_config('zencoder/api_key');
$document = generer_url_entite_absolue($id_document, 'document');
$url_notification = generer_url_action('zencoder_notification', 'id_document=' . $id_document, true, false);
$clip_length = '10';
try {
// Initialize the Services_Zencoder class
$zencoder = new Services_Zencoder($api_key);
// New Encoding Job
$encoding_job = $zencoder->jobs->create(array("input" => $document, "outputs" => array(array("label" => "webm", "size" => "640x480", "format" => "webm", "notifications" => array("format" => "json", "url" => $url_notification, "clip_length" => $clip_length)), array("label" => "ogg", "format" => "ogg", "size" => "640x480", "notifications" => array("format" => "json", "url" => $url_notification, "clip_length" => $clip_length)), array("label" => "mp4 low", "size" => "640x480", "notifications" => array("format" => "json", "url" => $url_notification, "clip_length" => $clip_length)))));
// Success if we got here
spip_log('success- Job ID: ' . $encoding_job->id . ' Output ID:' . $encoding_job->outputs['web']->id, 'zencoder');
} catch (Services_Zencoder_Exception $e) {
// If were here, an error occured
spip_log('error: ' . print_r($e), 'zencoder');
}
return;
}
开发者ID:abelass,项目名称:zencoder,代码行数:32,代码来源:zencoder_new_job.php
示例2: balise_URL_LOGOUT_dyn
function balise_URL_LOGOUT_dyn($cible)
{
if (!$GLOBALS['visiteur_session']['login'] and !$GLOBALS['visiteur_session']['statut']) {
return '';
}
return generer_url_action('logout', "logout=public&url=" . rawurlencode($cible ? $cible : self('&')));
}
开发者ID:genma,项目名称:spip_ynh,代码行数:7,代码来源:url_logout.php
示例3: menu_lang_pour_tous
function menu_lang_pour_tous($nom, $default) {
include_spip('inc/lang');
if ($GLOBALS['spip_lang'] <> $default) {
$opt = lang_select($default); # et remplace
if ($GLOBALS['spip_lang'] <> $default) {
$default = ''; # annule tout choix par defaut
if ($opt) lang_select();
}
}
$opt = liste_options_langues($nom, $default);
if (!$opt)
return '';
# lien a partir de /
$cible = parametre_url(self(), 'lang' , '', '&');
$post = generer_url_action('converser', 'redirect='. rawurlencode($cible), '&');
return array('formulaires/menu_lang',
3600,
array('nom' => $nom,
'url' => $post,
'langues' => $opt
)
);
}
开发者ID:rhertzog,项目名称:lcs,代码行数:27,代码来源:menu_lang_ecrire.php
示例4: action_tester_taille_dist
function action_tester_taille_dist()
{
if (!autoriser('configurer')) {
return;
}
$taille = _request('arg');
$taille = explode('-', $taille);
$GLOBALS['taille_max'] = end($taille);
$GLOBALS['taille_min'] = 0;
if (count($taille) > 1) {
$GLOBALS['taille_min'] = reset($taille);
}
// si l'intervalle est assez petit, on garde la valeur min
if ($GLOBALS['taille_max'] * $GLOBALS['taille_max'] - $GLOBALS['taille_min'] * $GLOBALS['taille_min'] < 50000) {
ecrire_meta('max_taille_vignettes', $t = $GLOBALS['taille_min'] * $GLOBALS['taille_min'] * 0.9, 'non');
echo round($t / 1000000, 3) . ' Mpx';
die;
}
$taille = $GLOBALS['taille_test'] = round(($GLOBALS['taille_max'] + $GLOBALS['taille_min']) / 2);
include_spip('inc/filtres');
// des inclusions representatives d'un hit prive et/ou public pour la conso memoire
include_spip('public/assembler');
include_spip('public/balises');
include_spip('public/boucles');
include_spip('public/cacher');
include_spip('public/compiler');
include_spip('public/composer');
include_spip('public/criteres');
include_spip('public/interfaces');
include_spip('public/parametrer');
include_spip('public/phraser_html');
include_spip('public/references');
include_spip('inc/presentation');
include_spip('inc/charsets');
include_spip('inc/documents');
include_spip('inc/header');
propre("<doc1>");
// charger propre avec le trairement d'un modele
$i = _request('i') + 1;
$image_source = chemin_image("test.png");
$GLOBALS['redirect'] = generer_url_action("tester_taille", "i={$i}&arg=" . $GLOBALS['taille_min'] . "-" . $GLOBALS['taille_test']);
ob_start('action_tester_taille_error_handler');
filtrer('image_recadre', $image_source, $taille, $taille);
$GLOBALS['redirect'] = generer_url_action("tester_taille", "i={$i}&arg={$taille}-" . $GLOBALS['taille_max']);
// si la valeur intermediaire a reussi, on teste la valeur maxi qui est peut etre sous estimee
$taille = $GLOBALS['taille_max'];
filtrer('image_recadre', $image_source, $taille, $taille);
$GLOBALS['redirect'] = generer_url_action("tester_taille", "i={$i}&arg={$taille}-" . $GLOBALS['taille_max']);
ob_end_clean();
// on est ici, donc pas de plantage
echo redirige_formulaire($GLOBALS['redirect']);
}
开发者ID:genma,项目名称:spip_ynh,代码行数:52,代码来源:tester_taille.php
示例5: action_envoyer_inscription_fraap_candidatures
function action_envoyer_inscription_fraap_candidatures($desc, $nom, $prenom, $mode, $options = array())
{
$contexte = array_merge($desc, $options);
$contexte['nom'] = $nom;
$contexte['prenom'] = $prenom;
$contexte['mode'] = $mode;
$contexte['url_confirm'] = generer_url_action('confirmer_inscription', '', true, true);
$contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'email', $desc['email']);
$contexte['url_confirm'] = parametre_url($contexte['url_confirm'], 'jeton', $desc['jeton']);
$message = recuperer_fond('modeles/mail_inscription_candidatures', $contexte);
$from = isset($options['from']) ? $options['from'] : null;
$head = null;
return array("", $message, $from, $head);
}
开发者ID:rougerose,项目名称:fraap_candidatures,代码行数:14,代码来源:envoyer_inscription_fraap_candidatures.php
示例6: presta_paybox_call_request_dist
function presta_paybox_call_request_dist($id_transaction, $transaction_hash, $abo = false, $cartes = array('CB', 'VISA', 'EUROCARD_MASTERCARD', 'E_CARD'))
{
if (!($row = sql_fetsel("*", "spip_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($transaction_hash)))) {
return "";
}
if (!$row['id_auteur'] and $GLOBALS['visiteur_session']['id_auteur']) {
sql_updateq("spip_transactions", array("id_auteur" => intval($row['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur'])), "id_transaction=" . intval($id_transaction));
}
// recuperer l'email
$mail = sql_getfetsel('email', 'spip_auteurs', 'id_auteur=' . intval($row['id_auteur']));
// passage en centimes d'euros
$montant = intval(100 * $row['montant']);
if (strlen($montant) < 3) {
$montant = str_pad($montant, 3, '0', STR_PAD_LEFT);
}
// Affectation des parametres obligatoires
$parm = paybox_pbx_ids();
$parm['PBX_OUTPUT'] = "C";
// recuperer uniquement les hidden
$parm['PBX_LANGUE'] = "FRA";
$parm['PBX_DEVISE'] = "978";
$parm['PBX_TOTAL'] = $montant;
$parm['PBX_PORTEUR'] = defined('_PBX_PORTEUR') ? _PBX_PORTEUR : $mail;
$parm['PBX_CMD'] = intval($id_transaction);
$parm['PBX_RETOUR'] = 'montant:M;id_transaction:R;auth:A;trans:S;abo:B;erreur:E;valid:D;sign:K';
$parm['PBX_EFFECTUE'] = generer_url_action('bank_response', "bankp=paybox", true, true);
$parm['PBX_REFUSE'] = generer_url_action('bank_cancel', "bankp=paybox", true, true);
$parm['PBX_ANNULE'] = generer_url_action('bank_cancel', "bankp=paybox", true, true);
if ($abo and $id_abonnement = sql_getfetsel("id_abonnement", "spip_abonnements_transactions", "id_transaction=" . intval($id_transaction)) and $montant_echeance = sql_getfetsel('prix_echeance', 'spip_abonnements', 'id_abonnement=' . intval($id_abonnement))) {
$montant_echeance = str_pad(intval(100 * $montant_echeance), 10, "0", STR_PAD_LEFT);
// infos de l'abonnement :
// montant identique recurrent, frequence mensuelle, a date anniversaire, sans delai
$parm['PBX_CMD'] .= "IBS_2MONT{$montant_echeance}" . "IBS_NBPAIE00" . "IBS_FREQ01" . "IBS_QUAND00";
}
//var_dump($parm);
$cartes_possibles = array('CB' => 'presta/paybox/logo/CB.gif', 'VISA' => 'presta/paybox/logo/VISA.gif', 'EUROCARD_MASTERCARD' => 'presta/paybox/logo/MASTERCARD.gif', 'E_CARD' => 'presta/paybox/logo/E-CB.gif', 'AMEX' => 'presta/paybox/logo/AMEX.gif', 'AURORE' => 'presta/paybox/logo/AURORE.gif');
include_spip('inc/filtres_mini');
$contexte = array('hidden' => array(), 'action' => _PAYBOX_URL, 'backurl' => url_absolue(self()), 'id_transaction' => $id_transaction);
foreach ($cartes as $carte) {
if ($cartes_possibles[$carte]) {
$parm['PBX_TYPEPAIEMENT'] = 'CARTE';
$parm['PBX_TYPECARTE'] = $carte;
$contexte['hidden'][$carte] = paybox_exec_request($parm);
$contexte['logo'][$carte] = $cartes_possibles[$carte];
}
}
return $contexte;
}
开发者ID:rougerose,项目名称:bank,代码行数:48,代码来源:request.php
示例7: action_logout_secu
/**
* Verifier un jeton si present, ou envoyer une page le produisant
* @param string $logout
* @param string $url
* @param string $jeton
* @return boolean
*/
function action_logout_secu($logout, $url, $jeton)
{
if ($jeton AND verifier_jeton_logout($jeton,$GLOBALS['visiteur_session']))
return true;
$jeton = generer_jeton_logout($GLOBALS['visiteur_session']);
$action = generer_url_action("logout","jeton=$jeton");
$action = parametre_url($action,'logout',$logout);
$action = parametre_url($action,'url',$url);
include_spip("inc/minipres");
include_spip("inc/filtres");
$texte = bouton_action(_T('spip:icone_deconnecter'),$action);
$texte = "<div class='boutons'>$texte</div>";
$texte .= '<script type="text/javascript">document.write("<style>body{visibility:hidden;}</style>");window.document.forms[0].submit();</script>';
echo minipres(_T('spip:icone_deconnecter'),$texte,'',true);
return false;
}
开发者ID:rhertzog,项目名称:lcs,代码行数:24,代码来源:logout.php
示例8: action_logout_dist
/**
* Se deloger
* Pour eviter les CSRF on passe par une etape de confirmation si pas de jeton fourni
* avec un autosubmit js pour ne pas compliquer l'experience utilisateur
*
* Déconnecte l'utilisateur en cours et le redirige sur l'URL indiquée par
* l'argument de l'action sécurisée, et sinon sur la page d'accueil
* de l'espace public.
*
*/
function action_logout_dist()
{
$logout = _request('logout');
$url = securiser_redirect_action(_request('url'));
// cas particulier, logout dans l'espace public
if ($logout == 'public' and !$url) {
$url = url_de_base();
}
// seul le loge peut se deloger (mais id_auteur peut valoir 0 apres une restauration avortee)
if (isset($GLOBALS['visiteur_session']['id_auteur']) and is_numeric($GLOBALS['visiteur_session']['id_auteur']) and isset($GLOBALS['visiteur_session']['statut'])) {
// il faut un jeton pour fermer la session (eviter les CSRF)
if (!($jeton = _request('jeton')) or !verifier_jeton_logout($jeton, $GLOBALS['visiteur_session'])) {
$jeton = generer_jeton_logout($GLOBALS['visiteur_session']);
$action = generer_url_action("logout", "jeton={$jeton}");
$action = parametre_url($action, 'logout', _request('logout'));
$action = parametre_url($action, 'url', _request('url'));
include_spip("inc/minipres");
include_spip("inc/filtres");
$texte = bouton_action(_T('spip:icone_deconnecter'), $action);
$texte = "<div class='boutons'>{$texte}</div>";
$texte .= '<script type="text/javascript">document.write("<style>body{visibility:hidden;}</style>");window.document.forms[0].submit();</script>';
$res = minipres(_T('spip:icone_deconnecter'), $texte, '', true);
echo $res;
return;
}
include_spip('inc/auth');
auth_trace($GLOBALS['visiteur_session'], '0000-00-00 00:00:00');
// le logout explicite vaut destruction de toutes les sessions
if (isset($_COOKIE['spip_session'])) {
$session = charger_fonction('session', 'inc');
$session($GLOBALS['visiteur_session']['id_auteur']);
spip_setcookie('spip_session', $_COOKIE['spip_session'], time() - 3600);
}
// si authentification http, et que la personne est loge,
// pour se deconnecter, il faut proposer un nouveau formulaire de connexion http
if (isset($_SERVER['PHP_AUTH_USER']) and !$GLOBALS['ignore_auth_http'] and $GLOBALS['auth_can_disconnect']) {
ask_php_auth(_T('login_deconnexion_ok'), _T('login_verifiez_navigateur'), _T('login_retour_public'), "redirect=" . _DIR_RESTREINT_ABS, _T('login_test_navigateur'), true);
}
}
// Rediriger en contrant le cache navigateur (Safari3)
include_spip('inc/headers');
redirige_par_entete($url ? parametre_url($url, 'var_hasard', uniqid(rand()), '&') : generer_url_public('login'));
}
开发者ID:JLuc,项目名称:SPIP,代码行数:53,代码来源:logout.php
示例9: previsu_redac_boite_infos
function previsu_redac_boite_infos(&$flux){
if ($flux['args']['type']=='article'
AND $id_article=intval($flux['args']['id'])
AND $statut = $flux['args']['row']['statut']
AND $statut == 'prepa'
AND autoriser('previsualiser')){
$message = _T('previsualiser');
$h = generer_url_action('redirect', "type=article&id=$id_article&var_mode=preview");
$previsu =
//icone_inline($message, $h, $image, "rien.gif", $GLOBALS['spip_lang_left'])
icone_horizontale($message, $h, "racine-24.gif", "rien.gif",false);
if ($p = strpos($flux['data'],'</ul>')){
while($q = strpos($flux['data'],'</ul>',$p+5)) $p=$q;
$flux['data'] = substr($flux['data'],0,$p+5).$previsu.substr($flux['data'],$p+5);
}
else
$flux['data'].= $previsu;
}
return $flux;
}
开发者ID:samszo,项目名称:open-edition,代码行数:20,代码来源:previsu_redac_pipelines.php
示例10: bank_url_api_retour
/**
* Generer les urls de retour bank
* @param array $config
* @param string $action
* response|cancel|autoresponse
* @param string $args
* query string
* @return mixed|string
*/
function bank_url_api_retour($config, $action, $args = "")
{
static $is_api = null;
if (is_null($is_api)) {
$is_api = false;
if (file_exists($f = _DIR_RACINE . ".htaccess")) {
lire_fichier($f, $contenu);
if (strpos($contenu, 'spip.php?action=api_$1') !== false) {
$is_api = true;
}
}
}
$presta = $config['presta'] . "-" . bank_config_id($config);
if ($is_api) {
return generer_url_public('', $args, false, false, "bank.api/{$presta}/{$action}/");
} else {
$args = (strlen($args) ? "&" : "") . $args;
$args = "bankp=" . $presta . $args;
return generer_url_action('bank_' . $action, $args, true, true);
}
}
开发者ID:nursit,项目名称:bank,代码行数:30,代码来源:bank.php
示例11: securiser_action_auteur
/**
* Attention: PHP applique urldecode sur $_GET mais pas sur $_POST
* cf http://fr.php.net/urldecode#48481
* http://doc.spip.org/@securiser_action_auteur
*
* @param string $action
* @param string $arg
* @param string $redirect
* @param bool|int|string $mode
* -1 : renvoyer action, arg et hash sous forme de array()
* true ou false : renvoyer une url, avec & (false) ou & (true)
* string : renvoyer un formulaire
* @param string|int $att
* id_auteur pour lequel generer l'action en mode url ou array()
* atributs du formulaire en mode formulaire
* @param bool $public
* @return array|string
*/
function securiser_action_auteur($action, $arg, $redirect = "", $mode = false, $att = '', $public = false)
{
// mode URL ou array
if (!is_string($mode)) {
$hash = calculer_action_auteur("{$action}-{$arg}", is_numeric($att) ? $att : null);
$r = rawurlencode($redirect);
if ($mode === -1) {
return array('action' => $action, 'arg' => $arg, 'hash' => $hash);
} else {
return generer_url_action($action, "arg={$arg}&hash={$hash}" . (!$r ? '' : "&redirect={$r}"), $mode, $public);
}
}
// mode formulaire
$hash = calculer_action_auteur("{$action}-{$arg}");
$att .= " style='margin: 0px; border: 0px'";
if ($redirect) {
$redirect = "\n\t\t<input name='redirect' type='hidden' value='" . str_replace("'", ''', $redirect) . "' />";
}
$mode .= $redirect . "\n<input name='hash' type='hidden' value='{$hash}' />\n<input name='arg' type='hidden' value='{$arg}' />";
return generer_form_action($action, $mode, $att, $public);
}
开发者ID:nursit,项目名称:SPIP,代码行数:39,代码来源:securiser_action.php
示例12: action_super_cron_dist
/**
* Url pour lancer le cron de manière asynchrone si le serveur
* le permet
*
* On se base sur le même code que celui du pipeline affichage final
*
* Cette fonction est utile pour être appelée depuis un cron UNIX par exemple
* car elle retourne tout de suite
*
* Exemple de tache cron Unix pour un appel toutes les minutes :
* "* * * * * curl http://www.mondomaine.tld/spip.php?action=super_cron"
*/
function action_super_cron_dist()
{
// Si fsockopen est possible, on lance le cron via un socket
// en asynchrone
if (function_exists('fsockopen')) {
$url = generer_url_action('cron');
$parts = parse_url($url);
$fp = fsockopen($parts['host'], isset($parts['port']) ? $parts['port'] : 80, $errno, $errstr, 30);
if ($fp) {
$out = "GET " . $parts['path'] . "?" . $parts['query'] . " HTTP/1.1\r\n";
$out .= "Host: " . $parts['host'] . "\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
fclose($fp);
return;
}
}
// ici lancer le cron par un CURL asynchrone si CURL est présent
// TBD
return;
}
开发者ID:genma,项目名称:spip_ynh,代码行数:33,代码来源:super_cron.php
示例13: exec_spiplistes_autocron
function exec_spiplistes_autocron () {
include_spip('inc/spiplistes_api');
spiplistes_debug_log ("exec_autocron()");
$sql_result = sql_select(
"id_courrier,total_abonnes,nb_emails_envoyes"
, 'spip_courriers'
, "statut=".sql_quote(_SPIPLISTES_COURRIER_STATUT_ENCOURS), '', '', 1
);
if(sql_count($sql_result) > 0 ){
$row = sql_fetch($sql_result);
// Compter le nombre de mails a envoyer
$id_mess = $row['id_courrier'];
$nb_inscrits = $row['total_abonnes'];
$nb_messages_envoyes = $row['nb_emails_envoyes'];
if($nb_inscrits > 0) {
echo "<p align='center'> <strong>".round($nb_messages_envoyes/$nb_inscrits *100)." %</strong> (".$nb_messages_envoyes."/".$nb_inscrits.") </p>";
}
}
else {
echo "fin";
}
// ??
$action = generer_url_action('cron','&var='.time());
echo ' <div style="background-image: url(\''. $action . '\');"> </div> ';
spiplistes_debug_log ("exec_autocron ACTION: $action");
spiplistes_debug_log("fin exec_autocron()");
}
开发者ID:rhertzog,项目名称:lcs,代码行数:38,代码来源:spiplistes_autocron.php
示例14: generer_url_document_dist
function generer_url_document_dist($id_document, $args = '', $ancre = '')
{
include_spip('inc/autoriser');
if (!autoriser('voir', 'document', $id_document)) {
return '';
}
$r = sql_fetsel("fichier,distant", "spip_documents", "id_document=" . intval($id_document));
if (!$r) {
return '';
}
$f = $r['fichier'];
if ($r['distant'] == 'oui') {
return $f;
}
// Si droit de voir tous les docs, pas seulement celui-ci
// il est inutilement couteux de rajouter une protection
$r = autoriser('voir', 'document');
if ($r and $r !== 'htaccess') {
return get_spip_doc($f);
}
include_spip('inc/securiser_action');
// cette action doit etre publique !
return generer_url_action('acceder_document', $args . ($args ? "&" : '') . 'arg=' . $id_document . ($ancre ? "&ancre={$ancre}" : '') . '&cle=' . calculer_cle_action($id_document . ',' . $f) . '&file=' . rawurlencode($f), true, true);
}
开发者ID:loorenzooo,项目名称:aslfc,代码行数:24,代码来源:documents.php
示例15: securiser_action_auteur
function securiser_action_auteur($action, $arg, $redirect="", $mode=false, $att='', $public=false)
{
static $id_auteur=0, $pass;
if (!$id_auteur) {
list($id_auteur, $pass) = caracteriser_auteur();
}
$hash = _action_auteur("$action-$arg", $id_auteur, $pass, 'alea_ephemere');
if (!is_string($mode)){
$r = rawurlencode($redirect);
if ($mode===-1)
return array('action'=>$action,'arg'=>$arg,'hash'=>$hash);
else
return generer_url_action($action, "arg=$arg&hash=$hash" . (!$r ? '' : "&redirect=$r"), $mode, $public);
}
$att .= " style='margin: 0px; border: 0px'";
if ($redirect)
$redirect = "\n\t\t<input name='redirect' type='hidden' value='". str_replace("'", ''', $redirect) ."' />";
$mode .= $redirect . "
<input name='hash' type='hidden' value='$hash' />
<input name='arg' type='hidden' value='$arg' />";
return generer_form_action($action, $mode, $att, $public);
}
开发者ID:rhertzog,项目名称:lcs,代码行数:24,代码来源:securiser_action.php
示例16: rejouer_session
function rejouer_session()
{
include_spip('inc/filtres');
return http_img_pack('rien.gif', " ", "id='img_session' width='0' height='0'") .
http_script("\ndocument.img_session.src='" . generer_url_action('cookie','change_session=oui', true) . "'");
}
开发者ID:rhertzog,项目名称:lcs,代码行数:6,代码来源:session.php
示例17: queue_affichage_cron
/**
* Déclenche le cron en asynchrone ou retourne le code HTML pour le déclencher
*
* Retourne le HTML à ajouter à la page pour declencher le cron
* ou rien si on a réussi à le lancer en asynchrone.
*
* Un verrou (cron.lock) empêche l'exécution du cron plus d'une fois par seconde.
*
* @uses queue_sleep_time_to_next_job()
* @see action_cron() L'URL appelée pour déclencher le cron
*
* @return string
*/
function queue_affichage_cron()
{
$texte = "";
$time_to_next = queue_sleep_time_to_next_job();
// rien a faire si le prochain job est encore dans le futur
if ($time_to_next > 0 or defined('_DEBUG_BLOCK_QUEUE')) {
return $texte;
}
// ne pas relancer si on vient de lancer dans la meme seconde par un hit concurent
if (file_exists($lock = _DIR_TMP . "cron.lock") and !(@filemtime($lock) < $_SERVER['REQUEST_TIME'])) {
return $texte;
}
@touch($lock);
// il y a des taches en attentes
// si depuis plus de 5min, on essaye de lancer le cron par tous les moyens pour rattraper le coup
// on est sans doute sur un site qui n'autorise pas http sortant ou avec peu de trafic
$urgent = false;
if ($time_to_next < -300) {
$urgent = true;
}
$url_cron = generer_url_action('cron', '', false, true);
if (!defined('_HTML_BG_CRON_FORCE') or !_HTML_BG_CRON_FORCE) {
// methode la plus rapide :
// Si fsockopen est possible, on lance le cron via un socket en asynchrone
// si fsockopen echoue (disponibilite serveur, firewall) on essaye pas cURL
// car on a toutes les chances d'echouer pareil mais sans moyen de le savoir
// on passe direct a la methode background-image
if (function_exists('fsockopen')) {
$parts = parse_url($url_cron);
switch ($parts['scheme']) {
case 'https':
$scheme = 'ssl://';
$port = 443;
break;
case 'http':
default:
$scheme = '';
$port = 80;
}
$fp = @fsockopen($scheme . $parts['host'], isset($parts['port']) ? $parts['port'] : $port, $errno, $errstr, 1);
if ($fp) {
$timeout = 200;
// ms
stream_set_timeout($fp, 0, $timeout * 1000);
$query = $parts['path'] . ($parts['query'] ? "?" . $parts['query'] : "");
$out = "GET " . $query . " HTTP/1.1\r\n";
$out .= "Host: " . $parts['host'] . "\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
spip_timer('read');
$t = 0;
// on lit la reponse si possible pour fermer proprement la connexion
// avec un timeout total de 200ms pour ne pas se bloquer
while (!feof($fp) and $t < $timeout) {
@fgets($fp, 1024);
$t += spip_timer('read', true);
spip_timer('read');
}
fclose($fp);
if (!$urgent) {
return $texte;
}
}
} elseif (function_exists("curl_init")) {
//setting the curl parameters.
$ch = curl_init($url_cron);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// cf bug : http://www.php.net/manual/en/function.curl-setopt.php#104597
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
// valeur mini pour que la requete soit lancee
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
// lancer
curl_exec($ch);
// fermer
curl_close($ch);
if (!$urgent) {
return $texte;
}
}
}
// si deja force, on retourne sans rien
if (defined('_DIRECT_CRON_FORCE')) {
return $texte;
}
// si c'est un bot
// inutile de faire un appel par image background,
// on force un appel direct en fin de hit
//.........这里部分代码省略.........
开发者ID:xablen,项目名称:Semaine14_SPIP_test,代码行数:101,代码来源:queue.php
示例18: generer_url_aide_img
function generer_url_aide_img($args)
{
return generer_url_action('aide_img', $args, false, true);
}
开发者ID:genma,项目名称:spip_ynh,代码行数:4,代码来源:aider.php
示例19: login_autoriser
function login_autoriser()
{
include_spip('inc/autoriser');
if (!autoriser('ecrire')) {
$h = generer_url_action('logout', 'logout=prive&url=' . urlencode(self()));
return array('message_erreur' => "<h1>" . _T('avis_erreur_visiteur') . "</h1><p>" . _T('texte_erreur_visiteur') . "</p><p class='retour'>[<a href='{$h}'>" . _T('icone_deconnecter') . "</a>]</p>");
}
return array();
}
开发者ID:horaciogd,项目名称:CGeomap,代码行数:9,代码来源:login.php
示例20: rejouer_session
/**
* Code à insérer par `inc/presentation` pour rejouer la session
*
* @note
* Pourquoi insère-t-on le src par js et non directement en statique dans le HTML ?
* Historiquement, inséré par une balise `<script>` en r424
* puis modifié par `<img>` statique + js en r427
*
* @see action_cookie_dist() qui sera appelé
*
* @return string
*/
function rejouer_session()
{
return '<img src="' . generer_url_action('cookie', 'change_session=oui', true) . '" width="0" height="0" alt="" />';
}
开发者ID:JLuc,项目名称:SPIP,代码行数:16,代码来源:session.php
注:本文中的generer_url_action函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论