 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
nechita_v_i
Data înscrierii: 09/Sep/2004
Mesaje: 9
|
| Trimis: Mie Oct 13, 2004 1:04 pm Titlul subiectului: Probleme la publicare |
|
|
Salut!
Am facut un site in php si dupa ce l-am pus pe net am vazut ca unele module nu mai mergeau. Eu am lucrat cu apache 2.0 si php 4.3.6.
Unde ar putea fi problema? |
|
| Sus |
|
taipan
Data înscrierii: 24/Sep/2004
Mesaje: 44
|
| Trimis: Mie Oct 13, 2004 1:09 pm Titlul subiectului: |
|
|
| Incearac si tu sa detaliezi ce erori iti trimite ca sa ne dam seama ce e de vine: webserverul, php-ul sau programatorul :twisted: |
|
| Sus |
|
nechita_v_i
Data înscrierii: 09/Sep/2004
Mesaje: 9
|
| Trimis: Mie Oct 13, 2004 11:11 pm Titlul subiectului: |
|
|
Uite, de exemplu am o pagina unde se introduc niste date:
<tr><td<?php if (isset($errors->firstname)) echo ' class="error"';
else echo ' class="error"'; ?> align="center"> <?php echo $lng['firstname']; ?></td>
<td>
<input type="text" name="firstname" size="30" maxlength="32" value="<?php pv($firstname); ?>"></td>
<tr><td<?php if (isset($errors->lastname)) echo ' class="error"';
else echo ' class="error"'; ?> align="center"> <?php echo $lng['lastname']; ?></td>
<td>
<input type="text" name="lastname" size="30" maxlength="32" value="<?php pv($lastname); ?>"></td></tr>
if (isset($HTTP_POST_VARS))
{
$frm = $HTTP_POST_VARS;
$errormsg = validate_form($frm, $errors);
if (empty($errormsg))
{
saveOrderInfo($HTTP_POST_VARS);
$template_to_include = $CFG->templatedir ."/tpl.xxxxxx.php";
}
}
aceste date sunt apelate in alta pagina.
echo $firstname .' '. $lastname .'<br>'.;
Problema este ca nu le mai afiseaza. |
|
| Sus |
|
un_guru
Data înscrierii: 25/Iul/2004
Mesaje: 153
Locație: Miecurea Ciuc
|
| Trimis: Joi Oct 14, 2004 1:31 pm Titlul subiectului: |
|
|
incearca in loc de $lastname sa folosesti $_REQUEST['lastaname']
mai multe detalii gasesti in manualul php la capitolul configurare/register_globals |
|
| Sus |
|
nechita_v_i
Data înscrierii: 09/Sep/2004
Mesaje: 9
|
| Trimis: Joi Oct 14, 2004 5:16 pm Titlul subiectului: |
|
|
| Ma gandesc ca daca pe localhost mergea ok, inseamna ca nu erau greseli in cod. Nu stiu unde ar putea fi problema. |
|
| Sus |
|
AEROStyle
Data înscrierii: 27/Mar/2004
Mesaje: 29
Locație: IT Universe
|
| Trimis: Joi Oct 14, 2004 5:37 pm Titlul subiectului: |
|
|
Cei care au configurat serverul pe care tu ai uploadat site-ul au pus in php.ini la register_globals valoarea Off [din motive desecuritate si performanta].
Deci variabilele super globale : HTTP_POST_VARS, HTTP_GET_VARS, HTTP_COOKIE_VARS, etc nu se mai pot afisa prin simpla comanda :
an style="color: #000000"><?php echo $variabila_super_globala ;
Probabil ca tu, pe localhost, ai register_globals = On si scripturile tale nu sunt compatibile cu configurarea de pe serverul extern.
Incearca, deci sa folosesti : $_GET['variabila'], $_POST['variabila'], $_COOKIE['variabila'], etc, in loc de $variabila, cand variabila e una super globala :!: |
|
| Sus |
|
arond
Data înscrierii: 11/Mar/2004
Mesaje: 580
Locație: 127.0.0.1
|
| Trimis: Joi Oct 14, 2004 7:29 pm Titlul subiectului: |
|
|
AEROStyle a scris: ...Incearca, deci sa folosesti : $_GET['variabila'], $_POST['variabila'], $_COOKIE['variabila'], etc, in loc de $variabila, cand variabila e una super globala :!:
$_GET, $_POST, etc se numesc variabile superglobale (sau autoglobale), etc, etc... Lamureste-ti notiunile :).
----
In alta ordine de idei, ametiti omul :), explicatii:
1. Daca setarea register_globals din php.ini este pe On atunci valorile pasate scriptului prin GET, POST si cookie-urile se regasesc in variabile globale cu numele potrivite. De exemplu:
index.php?nume=valoare
va rezulta in existenta unei variabile $nume cu valoarea 'valoare'.
2. Daca setarea register_globals din php.ini este pe Off atunci valorile pasate scriptului prin GET, POST si cookie-urile se regasesc NUMAI in array-urile predefinite $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS. De exemplu:
index.php?nume=valoare
NU va mai rezulta in existenta unei variabile $nume cu valoarea 'valoare'.
In versiunile mai noi de PHP (parca de la 4.2.0) acestea 3 sunt inlocuite de $_GET, $_POST, $_COOKIE, care sunt superglobale (nu mai trebuie sa le declari ca global in functii).
Este, mai pe larg, ce ti s-a mai spus si mai inainte.
Daca asta e problema ta, fa urmatoarea smecherie: schimba in php.ini in asa fel incat sa ai register_globals=Off (daca ai Windows, php.ini il gasesti in C:\Windows).
O sa observi, surprins, ca site-ul nu-ti mai merge nici pe localhost :) (probabil).
Numa' bune. |
|
| Sus |
|
nechita_v_i
Data înscrierii: 09/Sep/2004
Mesaje: 9
|
| Trimis: Joi Oct 14, 2004 9:37 pm Titlul subiectului: |
|
|
Multumesc pt raspunsuri dar register_globals=On pe serverul de net si Off pe localhost. Am incercat cu $_GET['firstname']. $POST['firstname'],$_REQUEST['lastaname'], intr-adevar merge pt prima pagina care apeleaza var. dar ce ma fac, ca mai le mai apelez o data in pag urmatoare si nu mai apar.
Deci, recapitulez: am o pag in care se introduc niste date, apoi o pagina care apleaza aceste date( merge cu $GET, $POST sau $REQUEST) si de aici o a treia pag care apeleaza si ea datele resp.(aici nu mai apar).
O alta problema cu care ma confrunt este aceea ca nu mai pot sa ma "loghez" la pagina de administrare. Dupa ce scriu username-ul si pass. revine la pag de login fara sa se intample nimic. Daca scriu un user. si un pass. gresit imi apare un msg. "login incorect, reincercati", ceva de genu. |
|
| Sus |
|
un_guru
Data înscrierii: 25/Iul/2004
Mesaje: 153
Locație: Miecurea Ciuc
|
| Trimis: Joi Oct 14, 2004 9:55 pm Titlul subiectului: |
|
|
pai nu apar pentru ca nu sunt trimise pe pagina a treia
pagina2.php
an style="color: #000000"><?php session_start();
$_SESSION = $_POST;
/* asta e o formulare "vulgara", inregistrezi totul in $_SESSION, in mod normal iti inregistrezi numa ce iti trebuie */
echo "....lalalalala ". $_POST['variabila'] . " = ". $_SESSION['variabila'];
pagina3.php
an style="color: #000000"><?php session_start();
echo " oare acum tine minte variabilele?"
echo $_SESSION['variabila'] . " ... se pare ca da";
cu loginul ... nu stiu cum procedeaza codul tau, poate ne arati si noua sa vedem unde e buba. Dar daca nu folosesti $_SESSION sau $_COOKIE pentru a tine minte utilizatorul ... poti sa te logezi toata ziua ca tot dejaba |
|
| Sus |
|
nechita_v_i
Data înscrierii: 09/Sep/2004
Mesaje: 9
|
| Trimis: Vin Oct 15, 2004 7:24 am Titlul subiectului: |
|
|
lib.login.php
<?php
function isLoggedIn()
{
global $USER;
return isset($USER['user']) && !empty($USER['user']['u_name']);
&& nvl($USER['ip'])
== $_SERVER['REMOTE_ADDR'];
}
function requireLogin()
{
global $CFG, $USER;
if (! isLoggedIn())
{
$USER['wantsurl'] = qualified_me();
redirect($CFG->wwwroot ."/login.php");
}
}
function requirePrivilege($privilege)
{
global $CFG, $USER;
if ($USER['user']['u_privilege'] != $privilege)
{
include_once($CFG->templatedir ."/tpl.privileges_fail.php");
exit;
}
}
function hasPrivilege($privilege)
{
global $USER;
return $USER['user']['u_privilege'] == $privilege;
}
function resetPassword($id)
{
global $CFG, $lng, $language;
$sql = db_query("SELECT u_name,
u_privilege,
u_email
FROM ". DB_PREFIX ."users
WHERE u_id = $id
");
$user = db_fetch_object($sql);
$newpassword = generatePassword();
$sql = db_query("UPDATE ". DB_PREFIX ."users
SET u_password = '" . md5($newpassword) ."'
WHERE u_id = $id
");
$var = new Object;
$var->url = $CFG->wwwroot;
$var->user = $lng['username'];
$var->username = $user->u_name;
$var->password = $lng['username'];
$var->newpassword = $newpassword;
$emailbody = file_get_contents ($CFG->infodir."/".$language."_mail_password.txt");
$emailbody .= readTemplate($CFG->templatedir ."/tpl.mail_password.php", $var);
if (RUN_LOCAL == 'false')
{
mail("$var->username <$user->u_email>", $CFG->shopname." ".$lng['password'], $emailbody);
}
else
{
$localtext = $var->username ." <". $user->u_email ."> - ".$lng['password']." - " . $CFG->shopname." ".$lng['password']. "\n". $emailbody;
$localmail = fopen("login.txt", "w+");
fwrite($localmail, $localtext);
fclose($localmail);
}
}
function checkEmail($email)
{
$sql = db_query("SELECT 1
FROM ". DB_PREFIX ."users
WHERE u_email = '$email'
");
return db_num_rows($sql);
}
function readTemplate($filename, &$var)
{
$temp = str_replace("\", "\\\", implode(file($filename), ""));
$temp = str_replace('"', '"', $temp);
eval("\$template = "$temp";");
return $template;
}
?>
login.php
<?php
include_once("./config.inc.php");
$DOC_TITLE = "TITLE";
if (matchReferer() && isset($_POST))
{
$user = verifyLogin($_POST['username'], $_POST['password']);
if ($user)
{
$USER['user'] = $user;
$USER['ip'] = $_SERVER['REMOTE_ADDR'];
header("Location: ". $CFG->wwwroot ."/admin/index.php");
db_query("UPDATE ". DB_PREFIX ."users
SET u_last_login = NOW()
WHERE u_name = '". $_POST['username'] ."'
");
exit();
}
else
{
$errormsg = $lng['invalid_login'];
unset($_POST['username']);
unset($_POST['password']);
}
}
include_once($CFG->templatedir ."/tpl.login.php");
function verifyLogin($username, $password)
{
if (empty($username) || empty($password))
{
return false;
}
$sql = db_query("SELECT u_name,
u_password,
u_privilege,
u_email
FROM ". DB_PREFIX ."users
WHERE u_name = '$username'
AND u_password = '". md5($password) ."'
");
return db_fetch_array($sql);
}
?>
tpl.login.php
an style="color: #000000"><?php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><?php echo $DOC_TITLE; ?></title>
<link media="screen" rel="stylesheet" type="text/css" href="./style.css">
<script language="JavaScript" type="text/javascript">
<!--
function doFocus()
{
document.entryform.username.focus();
}
// -->
</script>
</head>
<body onload="doFocus()">
<h1><?php echo $DOC_TITLE; ?></h1>
<hr size="2">
<br>
<div align="center">
<table border="1" cellpadding="20" cellspacing="0" width="70%" class="box" background="<?php echo $CFG->bannerdir; ?>/bbg.gif" summary="">
<tr valign="middle">
<td><?php if (! empty($errormsg)) { ?>
<div class="error" align="center"><?php pv($errormsg); ?></div>
<?php } ?>
<form name="entryform" method="post" action="<?php echo $ME; ?>">
<table summary="">
<tr><td align="left" class="descsmall" nowrap="nowrap"><?php echo $lng['username']; ?>:<br>
<input type="text" name="username" size="20" maxlength="16" value="<?php pv($frm['username']); ?>"></td></tr>
<tr><td> </td></tr>
<tr><td align="left" class="descsmall" nowrap="nowrap"><?php echo $lng['password']; ?>:<br>
<input type="password" name="password" size="32" maxlength="32"></td></tr>
<tr><td> </td></tr>
<tr><td align="left">
<input type="submit" value="<?php echo $lng['login']; ?>">
<input type="button" value="<?php echo $lng['cancel']; ?>" onClick="javascript: history.go(-1)"></td></tr>
<tr><td> </td></tr>
<tr><td align="left"><span style="font-size: medium">
<a href="<?php echo $CFG->wwwroot; ?>/forgot_password.php"><?php echo $lng['recover_password']; ?>?</a>
<hr>
<a href="<?php echo $CFG->wwwroot; ?>/index.php"><?php echo $lng['goto_webshop']; ?></a>
</span></td></tr>
</table>
</form></td>
</tr>
</table>
</div>
</body>
</html>
faceti abstractie de lipsa <?php nu stiu de ce nu apar. [/php] |
|
| Sus |
|
arond
Data înscrierii: 11/Mar/2004
Mesaje: 580
Locație: 127.0.0.1
|
| Trimis: Vin Oct 15, 2004 9:01 am Titlul subiectului: |
|
|
un_guru a scris: Dar daca nu folosesti $_SESSION sau $_COOKIE pentru a tine minte utilizatorul ... poti sa te logezi toata ziua ca tot dejaba
Citeste cu atentie fraza asta :).
Daca nu stochezi user-ul curent undeva in sesiune sau cookie-uri (cel mai bine sesiune), cam cum sa stii in accesele urmatoare daca user-ul a fost logged in cu succes ?
Si in plus, uita-te in login.php, e varza. Iti lipsesc o gramada de <?php, cam peste tot.
Numa' bune. |
|
| Sus |
|
apann
Data înscrierii: 17/Mai/2004
Mesaje: 93
|
| Trimis: Vin Oct 15, 2004 9:56 am Titlul subiectului: |
|
|
| Poate o fi si din cauza ca redirectezi scriptul in caz de autentificare apoi faci un update la baza de date. |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|