cicoandcico
11-03-2005, 10:08
1) ho fatto un modulino per l'autenticazione tramite cookie di sessione... è sicuramente molto fragile ma funziona. il problema è che non funziona con tutti, infatti molti utenti mi hanno contattato dicendo che se inseriscono uname/password corretti gli ripresenta la schermata di login senza alcun errore.
io pensavo che fosse un problema di cookie, ma dicono di averli abilitati... secondo voi cosa può essere?
colgo l'occasione per chiedervi se avete uno script migliore (sotto licenza GPL).
2) il programma che sto sviluppando è un gestore di mailing list che sfrutta phpmailer per inviare le email. sembra però che ci siano problemi legati ai server, in quanto talvolta le email inviate con certi smtp a certi indirizzi non arrivano :confused:. inoltre, sembra che mail() o sendmail non siano adatti a mandare mail a raffica, perchè aprono/chiudono la connessione ogni volta, per cui è consigliato di usare il metodo della connessione diretta al server smtp: voi che ne dite?
3)mi dicono che molti smtp server hanno una limitazione sul numero di email per ora, per evitare spam.
quindi bisognerebbe che facessi un meccanismo di scheduling per inviare un tot mail ogni ora, ma non so assolutamente come fare (non credo neanche che sia possibile).
sapete mica darmi qualche suggerimento, o indicarmi un server smtp che non abbia limitazioni da mettere a disposizione di tutti gli utenti?
il programma lo potete trovare qua (http://www.cicoandcico.com/products.php?option=ccmail).
<?
include (dirname(__FILE__) . "/config.php");
$time = date("j F Y G:i:s");
$ip = $_SERVER["REMOTE_ADDR"];
function write_log($filename, $string)
{
if (!is_writable($filename)) @chmod($filename, 0755);
$file = @fopen($filename, "a");
if ($file){
if (@flock($file, LOCK_EX)) //acquires lock
{
@fwrite($file, $string);
@flock($file, LOCK_UN); //releases lock
}
@fclose($file);
return true;
}
else print "Could not register access.";
return false;
}
header("Pragma: ");
header("Cache-Control: ");
header("Expires: Mon, 26 Jul 1980 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
//retrieves post variables
$username = ""; $password = "";
if (isset($_POST['username'])) $username = $_POST['username'];
if (isset($_POST['password'])) $password = $_POST['password'];
$login_page = "admin_form.php";
$success_page = "admin.php";
$login_err = 'Wrong Username or password!';
$chr_err = 'Invalid syntax. Please retry';
$message = "";
//if the form is empty and the cookie isn't set
//then display error message and return to login
if($username == "" && $password == "" && !isset($_COOKIE["this_cookie"])){
include($login_page);
exit();
}
//then make sure that only letters and numbers are entered
if($username != "" || $password != "" && !isset($_COOKIE["this_cookie"])){
if (preg_match ("/[^a-zA-Z0-9]/", $username.$password)){
$message = $chr_err;
include($login_page);
exit();
}
}
//if the cookie isn't set
if (!isset($_COOKIE["this_cookie"]) ){
$user_count = count($uname);
$user_exists = false;
// check through all the users to see if they exist
for ($i = 1; $i <= $user_count; $i++) {
$crypt_pass = crypt($upass[$i]);
$crypt_username = crypt($uname[$i]);
if (crypt($username, $crypt_username) == $crypt_username && crypt($password, $crypt_pass) == $crypt_pass){
$user_id=$i;
$user_exists = true;
}
}
if(!$user_exists){
write_log($data_dir . "/access_log", "<b>$time:</b> access denied to $username ($ip)<br>\n");
$message = $login_err;
include($login_page);
exit();
}
//if the login is correct then set the cookie so it dies when the browser is closed
$alias = $known_as[$user_id];
$cookie_val=crypt($uname[$user_id]);
setcookie ("name", $known_as[$user_id], 0);
setcookie ("this_cookie", $cookie_val, 0);
//Writing Log Access...
write_log($data_dir . "/access_log", "<b>$time:</b> $alias logon successfully<br>\n");
header("Location: $success_page");
exit();
}
?>
io pensavo che fosse un problema di cookie, ma dicono di averli abilitati... secondo voi cosa può essere?
colgo l'occasione per chiedervi se avete uno script migliore (sotto licenza GPL).
2) il programma che sto sviluppando è un gestore di mailing list che sfrutta phpmailer per inviare le email. sembra però che ci siano problemi legati ai server, in quanto talvolta le email inviate con certi smtp a certi indirizzi non arrivano :confused:. inoltre, sembra che mail() o sendmail non siano adatti a mandare mail a raffica, perchè aprono/chiudono la connessione ogni volta, per cui è consigliato di usare il metodo della connessione diretta al server smtp: voi che ne dite?
3)mi dicono che molti smtp server hanno una limitazione sul numero di email per ora, per evitare spam.
quindi bisognerebbe che facessi un meccanismo di scheduling per inviare un tot mail ogni ora, ma non so assolutamente come fare (non credo neanche che sia possibile).
sapete mica darmi qualche suggerimento, o indicarmi un server smtp che non abbia limitazioni da mettere a disposizione di tutti gli utenti?
il programma lo potete trovare qua (http://www.cicoandcico.com/products.php?option=ccmail).
<?
include (dirname(__FILE__) . "/config.php");
$time = date("j F Y G:i:s");
$ip = $_SERVER["REMOTE_ADDR"];
function write_log($filename, $string)
{
if (!is_writable($filename)) @chmod($filename, 0755);
$file = @fopen($filename, "a");
if ($file){
if (@flock($file, LOCK_EX)) //acquires lock
{
@fwrite($file, $string);
@flock($file, LOCK_UN); //releases lock
}
@fclose($file);
return true;
}
else print "Could not register access.";
return false;
}
header("Pragma: ");
header("Cache-Control: ");
header("Expires: Mon, 26 Jul 1980 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
//retrieves post variables
$username = ""; $password = "";
if (isset($_POST['username'])) $username = $_POST['username'];
if (isset($_POST['password'])) $password = $_POST['password'];
$login_page = "admin_form.php";
$success_page = "admin.php";
$login_err = 'Wrong Username or password!';
$chr_err = 'Invalid syntax. Please retry';
$message = "";
//if the form is empty and the cookie isn't set
//then display error message and return to login
if($username == "" && $password == "" && !isset($_COOKIE["this_cookie"])){
include($login_page);
exit();
}
//then make sure that only letters and numbers are entered
if($username != "" || $password != "" && !isset($_COOKIE["this_cookie"])){
if (preg_match ("/[^a-zA-Z0-9]/", $username.$password)){
$message = $chr_err;
include($login_page);
exit();
}
}
//if the cookie isn't set
if (!isset($_COOKIE["this_cookie"]) ){
$user_count = count($uname);
$user_exists = false;
// check through all the users to see if they exist
for ($i = 1; $i <= $user_count; $i++) {
$crypt_pass = crypt($upass[$i]);
$crypt_username = crypt($uname[$i]);
if (crypt($username, $crypt_username) == $crypt_username && crypt($password, $crypt_pass) == $crypt_pass){
$user_id=$i;
$user_exists = true;
}
}
if(!$user_exists){
write_log($data_dir . "/access_log", "<b>$time:</b> access denied to $username ($ip)<br>\n");
$message = $login_err;
include($login_page);
exit();
}
//if the login is correct then set the cookie so it dies when the browser is closed
$alias = $known_as[$user_id];
$cookie_val=crypt($uname[$user_id]);
setcookie ("name", $known_as[$user_id], 0);
setcookie ("this_cookie", $cookie_val, 0);
//Writing Log Access...
write_log($data_dir . "/access_log", "<b>$time:</b> $alias logon successfully<br>\n");
header("Location: $success_page");
exit();
}
?>