[PHP &Mysql]Setcookie werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mistercash
  • Registratie: Juli 2004
  • Laatst online: 30-10-2024
Hallo,

Wel ik heb thuis op mijn server windows 2000 server draaiien. Ik heb daar nu Mysql opgeïnstalleerd en PHP v4.3.
Nu kan hij wel gegevens uit mijn database halen.
Maar om inteloggen moet hij eerst ne cookie zetten en dan die cookie uitlezen.
Maar hij zegt dan waar de cookie moet gezet worden undefined variable user()
die user() is de variabele van mijn cookie.

Mijn webserver is IIS4.
Nu moest ik ergens de internetgebruiker opgeven voor rechten en execute rechten dat heb ik gedaan op de map php en bepaalde rechten voor de onderliggende files zoals gezegd wordt op het einde van de installatie van php.

Kan het mss zijn dat bepaalde functies nog ingeschakelt zijn in php ofzo voor beveiliging.
Ik weet dat mijn scripten werken want ik heb gewoon alle pagina's overgezet van mijn vroegere webhoster naar mijn thuis.

Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
code:
1
undefined variable user()
Misschien eerst eens ff onderzoeken waarom hij deze melding geeft? User() is een functie die een naam oid teruggeeft? Lijkt er dus op dat dat fout gaat, niet het setten van de cookie...

Acties:
  • 0 Henk 'm!

  • mistercash
  • Registratie: Juli 2004
  • Laatst online: 30-10-2024
Dit geeft weer dat er geen cookie is gezet.

Is dit mss omdat het in safe mode ofzo runt.
Kan ik dit soms ergens opzetten dat hij wel cookies kan zetten?

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

* ripexx zoekt glazen bol ;)

Nee, kijk eens naar de functie user(), lijkt me strak dat je variabelen user() gaat noemen. Het kan wel te maken hebben met safe mode maar vanaf 4.1 is alles standaard safe mode on. Dus als er daar geen rekening mee gehouden is weet ik het niet. Verder zal het er mee te maken hebben dat je instelling toch net iets anders zijn. Waarschijnlijk zal je hoster ook linux hebben gedraaid waardoor de pad namen niet altijd evengoed worden verwerkt. Vedre blijft het gissen, lever wat code aan. Wat wordt aangeroepen en hoe?

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • mistercash
  • Registratie: Juli 2004
  • Laatst online: 30-10-2024
Mijn hoster was protagonist.nl
Dit zet ik in mijn login script de $username en $password wordt aangeleverd door een form bij submit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php 
if(isset($username)&&isset($password))
{
    
    setcookie("user0",$username,time()+86400);
    setcookie("user1",$password,time()+86400);
    include("dbconnect.inc");
    $query_recordset1= "select UserID from tblusers where Username='$username' and Password='$password'";
    $recordset1=mysql_query($query_recordset1,$db) or
        die (mysql_error());
    $row_recordset1=mysql_fetch_assoc($recordset1);
    $totalrows_recordset1=mysql_num_rows($recordset1);
    $check=$row_recordset1['UserID'];
            
    if($check<>null)
    {
        echo "<body bgcolor=#CBCBCB><table width=75% align=center><tr><td><font size=6><strong>You will be transferred immediatly</strong></font></td></tr></table>";
        echo "<meta http-equiv=refresh content=5;URL=rechts.php>";
    }
    else
    {
        echo "<body bgcolor=#CBCBCB>Your Login wasn't right.<br>";
        echo "<meta http-equiv=refresh content=0;URL=wronglogin.php>";
    }
}
        
?>

[ Voor 33% gewijzigd door mistercash op 17-10-2004 16:19 ]


Acties:
  • 0 Henk 'm!

  • inTIMidate
  • Registratie: September 2001
  • Laatst online: 15:47
probeer eens:
$_POST['username'] & $_POST['password']

Acties:
  • 0 Henk 'm!

  • mistercash
  • Registratie: Juli 2004
  • Laatst online: 30-10-2024
Zegt dat hij de de variabele $_post niet kent

Bij mijn form in mijn loginpagina staat method post naar de de pagina waar ik juist de code heb van gegeven.

Ik denk dat hij echt geen cookies kan aanmaken en dat waarschijnlijk ook de variabele username en password ook niet doorgegeven worden in de method post van mijn form

Edit:

Het ligt volgens mij toch aan de method post ofzo
Moet ge na de submit de eigenlijke pagina met de form inladen of kunt ge zoals ik deed naar een andere pagina linken.
Het heeft gewerkt op die webhoster

[ Voor 25% gewijzigd door mistercash op 17-10-2004 15:43 ]


Acties:
  • 0 Henk 'm!

  • HielkeJ
  • Registratie: Juli 2001
  • Niet online
zet eens zoiets in je script (aan het begin):
PHP:
1
2
3
4
5
if (isSet($_POST['username'])) {
            echo $_POST['username'];
} elseif (isSet($username)) {
             echo $username;
}


Wat doet hij dan?

[ Voor 10% gewijzigd door HielkeJ op 17-10-2004 15:42 ]


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Even een paar opmerkingen:

- Zet nooit een passwd in een cookie, lekker makelijk te achterhalen ;)
- Cookies accepteren ook array's ;)
PHP:
1
2
3
4
5
setcookie("array_naam[key_1]", 1);
setcookie("array_naam[key_2]", 2);
setcookie("array_naam[key_3]", 3);

print_r($_COOKIE);

- Het moet niet $_post maar $_POST zijn. (Variabele namen zijn case sensitive)
- gebruik op GoT [php]<? mijn code ?>[/php] Direct highlighting enzo :P

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • mistercash
  • Registratie: Juli 2004
  • Laatst online: 30-10-2024
Ik heb $_POST geprobeerd en hij geeft niets weer dus hij krijgt geen post van het form.

Hoe zou dit komen?

Dit staat in mijn loginform:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form action="login.php" method="post" target="rechtsmidden">
            <td width="179" height="91" background="images/bgform.gif" valign="top">
            <div style="padding-top:11px;">
            <table cellpadding="0" cellspacing="0" border="0">
                <tr>
                    <td style="padding-left:68px;"><input type="text" style="width:77;height:20" name="username"></td><td></td>
                </tr>
                <tr><td height="5"></td></tr>
                <tr>
                    <td style="padding-left:68px;"><input type="password" style="width:77;height:20" name="password"></td><td style="padding-left:3px;"><a href="links.php" target="linksmidden"><input name="Submit" type="image" id="Submit" src="images/enter.jpg" alt="Go" width="27" height="24"></a></td>
                </tr>
                <tr>
                    <td style="padding-left:12px;"><a href="lostpassword.php" target="rechtsmidden" style="text-decoration:none;">Lost password?</a><br>
                                                    <a href="register.php" target="rechtsmidden" style="text-decoration:none;">Not registered yet?</a></td>
                </tr>
            </table>
            </form>

Acties:
  • 0 Henk 'm!

Verwijderd

Je submit-knop is een image.
Die geeft alleen een x en een y-waarde terug.

Probeer eens een standaard button?

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17:49

ripexx

bibs

Waarom heb je in het form een <a href=""> </a> om je button staan? Welk nu heeft dat ding? Verder mag het absoluut niets uimaken of je nu een button of image gebruikt voor het submitten. Verder kan je gewoon eens testen met een test script op je server. Kan je in ieder geval controleren wat er wel en niet zou werken op je server. Maak maar eens gebruik van print_r($_POST) en print_r($_GET) en ook bijvoorbeeld var_dump(). Heel handig met debuggen.

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • mistercash
  • Registratie: Juli 2004
  • Laatst online: 30-10-2024
Awel wat ik nu wil zeggen waarom het op mijn webhoster het wel werkte en bij mijn thuis niet. Heb de database overgezet.
Gewoon gedownload en geopent in IE.

Acties:
  • 0 Henk 'm!

  • mistercash
  • Registratie: Juli 2004
  • Laatst online: 30-10-2024
The problem is solved

Het probleem is dat in nieuwe php versies de register-globals op on staat dit voor security problemen te vermijden en dus blijkbaar is mijn hoster zijn php globals op off.

Heb het bij mijn thuis ook eens op off gezet en dan werkt het zoals het moet.


Alleen heb ik nu een ander probleem zou waarschijnlijk ook komen door de nieuwe versie van php.

als er via een bepaalde pagina naar een andere pagina wordt doorgeklikt dan geef ik een bepaalde variabele(vb: $view=ik) mee komt het van een andere pagina dan geef ik het een andere variabele mee(vb: $char=a)
Nu als die pagina laadt dan is er altijd één van de 2 variabele niet in gebruik.
dus als $view=ik dan is $char niet gedefinieerd.
Dus geeft hij een fout dat char niet gedefienieerd is.
Hoe kan ik het dan wel oplossen?

Kan ik dit doen door vb $char isset ofzo?

Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
Tip: Verdiep je wel even in die register_globals, die staan namelijk niet voor niets aan in nieuwe PHP versies ;) Zie o.a. P&W FAQ - PHP

Over je tweede probleem: de foutmelding die je krijgt, is dat een Notice? Een oplossing zou zijn om ergens bovenaan de pagina de variabelen een standaardwaarde te geven, of op NULL zetten. Zo dus:
PHP:
1
2
$char = NULL;
$view = NULL;

Acties:
  • 0 Henk 'm!

  • mistercash
  • Registratie: Juli 2004
  • Laatst online: 30-10-2024
waarom kreeg ik zulke meldingen niet op mijn webhoster.

Had die webhoster iets aangepast dan in php.ini

Acties:
  • 0 Henk 'm!

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

Je hebt waarschijnlijk je error_reporting op E_ALL staan, check ook P&W FAQ - PHP

Research is what I'm doing when I don't know what I'm doing.


Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
De meldingen van die variabelen? Waarschijnlijk staat ergens het error_reporting level op E_ALL. Dit betekent dat alle errors worden weergegeven, waaronder E_NOTICES die ontstaan doordat een variabele ergens aangeroepen wordt, terwijl hij niet bestaat. Je kan dit ook uitzetten, maar het is ook een goede oefening om ervoor te zorgen dat je geen notices krijgt :)

Acties:
  • 0 Henk 'm!

  • mistercash
  • Registratie: Juli 2004
  • Laatst online: 30-10-2024
Allemaal hartelijk dank.

Heb alles kunnen solven had idd met de notices te maken.

Dit topic mag gesloten worden
Pagina: 1