/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Call to undefined function (login-script)
Fra : Søren B.


Dato : 08-01-05 14:47

Hej Gruppe

Jeg har et lille noob spørgsmål - og jeg ville være taknemmelig hvis nogen
kunne guide mig i den rigtige retning.

Det drejer sig om et lille logon-script
når brugeren er logget på starter en session - og brugeren kan så benytte
sig af nogle functions.
Blandt de tilgængelige functions efter log-in er denne:

function link1() {
echo"<a class='menu' href=\"../forhandlernet/index.php\">TILBUD</a>";
}

linket peger på den password-beskyttede side - jeg vil gerne have at linket
kun kan ses af brugere som er logget ind - og samtidigt skal linket vises på
alle sider.

Det - jeg lægger ind i min menu er et kald til funktionen :

<?
link1();
?>

Og det er vel derfor alm. brugere får en fejlen :

Fatal error: Call to undefined function: link1()

Kan man på en eller anden måde sikre at kaldet kun sker hvis brugeren er
logget ind.


Følgende kode ligger til grund

log-on form
******************
<form action="blank.php" method="post">
<input type="hidden" name="logind" value="logind">
<p><b>Indtast:</b></p>
Brugernavn: (test)<br>
<input type="text" name="navn" size="14"><br>
Password: (test)<br>
<input type="password" name="password" size="14"><br>
<input type="submit" name="submit" value="Log ind">
</form>

<?
if (isset($_GET['error']) && $_GET['error'] == "fejl") {
echo"<b>Fejl i brugernavn eller password!</b>";
}
?>
***********************

blank.php
************************
<?
session_start();
if (isset($_POST['logind'])) {
if ($_POST['navn'] == "test" && $_POST['password'] == "test") {
$_SESSION['sessionnr'] = session_id();
$_SESSION['Name'] = $_POST['navn'];

header("Location:forhandlernet/index.php");
exit;
}else{

header("Location:index.php?error=fejl");
exit;
}
}else{
header("Location:index.php");
exit;
}
?>
**************************

tjeklogin.php
*****************************
<?
session_start();
if (!isset($_SESSION['Name'], $_SESSION['sessionnr']) ||
$_SESSION['sessionnr'] != session_id()) {
header("Location:forhandlernet/index.php");
}

function link1() {
echo"<a class='menu' href=\"../forhandlernet/index.php\">TILBUD</a>";
}
?>
******************************

På Forhånd tak for hjælpen



 
 
Mads Jensen (08-01-2005)
Kommentar
Fra : Mads Jensen


Dato : 08-01-05 16:04

Søren B. wrote:

[snip]
> Og det er vel derfor alm. brugere får en fejlen :
>
> Fatal error: Call to undefined function: link1()
>
> Kan man på en eller anden måde sikre at kaldet kun sker hvis brugeren er
> logget ind.
[snip en masse kode]

Jeps, men du smider jo brugeren videre efter (header(...)), at hans kode
er godkendt, også har du kun funktionen stående i den fil, du lige har
vist. Læg istedet funktionen ind i forhandlernet/index.php, og så burde
det forhåbentlgi virke lidt bedre.

mvh.
--
Mads Jensen
To email me, remove z's in my address

Q: Why shouldn't I simply delete the stuff I never use, it's just taking up
space?
A: This question is in the category of Famous Last Words..
   -- From the Frequently Unasked Questions

Søren B. (08-01-2005)
Kommentar
Fra : Søren B.


Dato : 08-01-05 16:34


"Mads Jensen" wrote
> Søren B. wrote:
>
> [snip]
>> Og det er vel derfor alm. brugere får en fejlen :
>>
>> Fatal error: Call to undefined function: link1()
>>
>> Kan man på en eller anden måde sikre at kaldet kun sker hvis brugeren er
>> logget ind.
> [snip en masse kode]
>
> Jeps, men du smider jo brugeren videre efter (header(...)), at hans kode
> er godkendt, også har du kun funktionen stående i den fil, du lige har
> vist. Læg istedet funktionen ind i forhandlernet/index.php, og så burde
> det forhåbentlgi virke lidt bedre.

Mange tak for svaret

Jeg glemte lidt kode fra forhandler/index.php - her kommer den:
<? require("../tjeklogin.php"); ?>

Jeg har ikke problem med at benytte link1() når brugeren er logget ind - og
jeg vil kun have at brugere som er logget ind kan benytte link1() - mit
problem er at brugere som ikke er logget ind prøver at kalde link1() som vil
være en del af sitets totale menu.

jeg har behov for et eller andet som i "menneskesprog" :) - skal fungere
sådan her:

kald link1() hvis du kan se funktionen - hvis du ikke kan se funktionen så
ignorer kaldet

Jeg ved ikke om det kan lade sig gøre - og hvordan man gør :)

/Søren B.



Jacob Atzen (08-01-2005)
Kommentar
Fra : Jacob Atzen


Dato : 08-01-05 20:30

On 2005-01-08, Søren B. <sorenb@SLETadslhome.dk> wrote:
> jeg har behov for et eller andet som i "menneskesprog" :) - skal fungere
> sådan her:
>
> kald link1() hvis du kan se funktionen - hvis du ikke kan se funktionen så
> ignorer kaldet
>
> Jeg ved ikke om det kan lade sig gøre - og hvordan man gør :)

Det lyder som om dit design lader noget tilbage at ønske.

Det du beskriver ovenfor kan dog gøres med følgende kode (hvis du
insisterer ):

if(function_exists('link1')) {
link1();
}

--
Med venlig hilsen
- Jacob Atzen

Søren B. (08-01-2005)
Kommentar
Fra : Søren B.


Dato : 08-01-05 20:51


"Jacob Atzen" wrote in message
>
> Det lyder som om dit design lader noget tilbage at ønske.

Jeps det kan du på mange måder have ret i - selve scriptet fungere sådan set
fint nok (et jeg har fundet).. det passer bare
ikke lige til det jeg havde planer om.

> Det du beskriver ovenfor kan dog gøres med følgende kode (hvis du
> insisterer ):
>
> if(function_exists('link1')) {
> link1();
> }

Tro det eller ej - det prøvede jeg tidligere uden held - virker fint på den
side der er passward-beskyttet men på de alm-sider virker det ikke.

jeg skrinlægger planerne om at have link til den passwordbeskyttede side på
de alm sider

tak for hjælpen - jeg finder på noget andet

Søren B.



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste