function generateUniqueToken($number) { $arr = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'v', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'V', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'); $token = ""; for ($i = 0; $i < $number; $i++) { $index = rand(0, count($arr) - 1); $token .= $arr[$index]; } if (isToken($token)) { return generateUniqueToken($number); } else { return $token; } }
unset($_SESSION["token"]); } unset($_SESSION["count_question"]); unset($_SESSION["token_test"]); unset($_SESSION["page"]); unset($_SESSION["category"]); } } $_SESSION["is_page_refresh"] = false; if (!isToken()) { generateToken(); getDataTestDefault($blockHtml); //muestra el cuadro de test con el contenido que le pasamos $_SESSION["is_page_refresh"] = false; } else { if (isset($_SESSION["token_test"]) && $_SESSION["token_test"] && (isToken() && getToken())) { $_SESSION["is_page_refresh"] = true; getDataTestFromCache(); //mostramos un load de cargando, ya que vamos a cargar datos desde la cache por que hay un test activo. } else { $_SESSION["is_page_refresh"] = true; getDataTestDefault($blockHtml); //muestra el cuadro de test con el contenido que le pasamos } } } else { ?> <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.css" rel="stylesheet"> <div class="container">
@IMPORT URL("http://www.example.com/print.css") PRINT; __CSS__; isToken($lexbuf, 'IMPORT NL IMPORT NL IMPORT', 'IMPORT'); $t->comment('rulesets'); isToken('* { margin:0; }', 'SELECTOR LBRACE SPACE IDENT : NUMBER ; SPACE }', 'star selector'); isToken('* { _margin:0; }', 'SELECTOR LBRACE SPACE IDENT : NUMBER ; SPACE }', 'under score hack'); isToken('div{margin:5px 10px}', 'SELECTOR LBRACE IDENT : LENGTH SPACE LENGTH }', 'basically ruleset'); isToken("div { margin:10px\nauto\n15px; }", 'SELECTOR LBRACE SPACE IDENT : LENGTH NL IDENT NL LENGTH ; SPACE }', 'expressions splited by NL'); isToken("p\n\n{\r\nmargin:\r\n\r\n0;}", 'SELECTOR NL NL LBRACE NL IDENT : NL NL NUMBER ; }', 'continuum NL'); isToken("a:hover\n{\n line-height:1.5;\n }\n", 'SELECTOR NL LBRACE NL SPACE IDENT : NUMBER ; NL SPACE } NL', 'pseudo'); isToken('ul,ol { margin:0; padding:0; }', 'SELECTOR LBRACE SPACE ' . 'IDENT : NUMBER ; SPACE ' . 'IDENT : NUMBER ; SPACE ' . '}', 'multi parent'); isToken('h2+p , div > span { margin: 0; padding : 0 ; }', 'SELECTOR LBRACE SPACE ' . 'IDENT : SPACE NUMBER ; SPACE ' . 'IDENT SPACE : SPACE NUMBER SPACE ; SPACE ' . '}', 'selectors with plus and greater operator'); $t->comment('recursive rulesets'); isToken('div { width:100%; p { color:#3399ff; } }', 'SELECTOR LBRACE SPACE IDENT : PERCENTAGE ; SPACE ' . 'SELECTOR LBRACE SPACE IDENT : HEXCOLOR ; SPACE } SPACE ' . '}'); isToken('a:hover { color:#ccc; span:hover { text-decoration:underline; } }', 'SELECTOR LBRACE SPACE IDENT : HEXCOLOR ; SPACE ' . 'SELECTOR LBRACE SPACE IDENT : IDENT ; SPACE } SPACE }', 'resursive selector with pseudo'); isToken('div{a:hover{background:url("http://example.com/bg.png") no-repeat;}}', 'SELECTOR LBRACE SELECTOR LBRACE ' . 'IDENT : URI SPACE IDENT ; } }', 'no space, hexcolor, only child'); isToken('div { ul { list-style:none } margin:0 }', 'SELECTOR LBRACE SPACE ' . 'SELECTOR LBRACE SPACE IDENT : IDENT SPACE } ' . 'SPACE IDENT : NUMBER SPACE }', 'with spaces, parent rule after childs one'); isToken('DIV { UL { LIST-STYLE:NONE } BACKGROUND:URL("HTTP://EXAMPLE.COM/BG.PNG") NO-REPEAT }', 'SELECTOR LBRACE SPACE ' . 'SELECTOR LBRACE SPACE IDENT : IDENT SPACE } ' . 'SPACE IDENT : URI SPACE IDENT SPACE }', 'upper case'); $t->comment('variables'); isToken('[% HOGE %]', 'cLDELIM SPACE cCOMMAND SPACE cRDELIM', 'simple command'); isToken('div { margin:0 }[% HOGE %]p{padding:0}', 'SELECTOR LBRACE SPACE IDENT : NUMBER SPACE } ' . 'cLDELIM SPACE cCOMMAND SPACE cRDELIM ' . 'SELECTOR LBRACE IDENT : NUMBER }', 'ruleset - command - ruleset'); isToken('h2 { border:1px solid [%sky%]; }', 'SELECTOR LBRACE SPACE IDENT : LENGTH SPACE IDENT cLDELIM cIDENT cRDELIM ; SPACE }', 'variable as a value'); isToken("[% SEL %]\n{\n[% PROP %]\n:\n[% EXPR term %]\n}", 'cLDELIM SPACE cCOMMAND SPACE cRDELIM NL LBRACE NL ' . 'cLDELIM SPACE cCOMMAND SPACE cRDELIM NL : NL ' . 'cLDELIM SPACE cCOMMAND SPACE cIDENT SPACE cRDELIM NL }', 'command as selector, property, expr'); isToken('[% fuga = "hogege" %][%uge=\'UGE\'%]', 'cLDELIM SPACE cIDENT cEQUAL SPACE cVALUE SPACE cRDELIM ' . 'cLDELIM cIDENT cEQUAL cVALUE cRDELIM', 'define variable'); $t->comment('commands'); isToken('[% IMPORT "hoge.scss" %][% IMPORT \'fuga.scss\' %]', 'cLDELIM SPACE cCOMMAND SPACE cVALUE SPACE cRDELIM ' . 'cLDELIM SPACE cCOMMAND SPACE cVALUE SPACE cRDELIM', 'IMPORT command'); $t->comment('loose property'); isToken('body { *font-size:small }', 'SELECTOR LBRACE SPACE LOOSE_PROP : IDENT SPACE }', 'Loose property'); SmartCSS::$strict = true; isToken('body { *font-size:small }', 'SELECTOR LBRACE SPACE * IDENT : IDENT SPACE }', 'Loose property had not parsed in strict mode');
echo "<h1>Vote YES counted!</h1>"; echo "<p>"; $token = randomString(); if (rename("tokens/" . $_POST['token'], "yes/{$token}")) { echo "Your vote: \"YES\" was counted with token \"{$token}\". You should keep this token to verify that your vote was counted."; } else { echo "An error occured."; } echo "</p>"; } else { echo "<h1>Invalid vote was not counted!</h1>"; echo "<p>Invalid vote. Please try again.</p>"; } } } else { if (isToken($_GET)) { echo "<h1>Dear CAcert Inc. member!</h1>"; echo "<p>Please give your vote until 2016-01-28 00:00 UTC.</p>"; echo "<p>Should CAcert perform the Root Re-sign Procedure?</p>"; echo "<p><form method='POST' action='?'><input type='hidden' name='token' value='{$_GET['token']}'>"; echo " <input class='btn btn-primary btn-lg' style='margin-right: 10px' role='button' type='submit' name='y' value='YES'>"; echo " <input type='submit' name='n' value='NO' class='btn btn-primary btn-lg'>"; echo "</form></p>"; } else { echo "<p>Token for voting not found or used!</p>"; } } } else { echo "<h1>Results:</h1>"; summary("yes", "YES"); summary("no", "NO");