Avatar billede hollow Nybegynder
04. februar 2010 - 23:43 Der er 14 kommentarer og
1 løsning

Ny I PHP problem

Hey vil lige høre om der er nogen som kan fortælle mig hvorfor funktion nummer 1 virker men at nummer 2 ikke virker


$username = $_POST[username];
$password = $_POST[password];



// ! Her har jeg indtastet værdierne istædet for at bruge variablerne

function 1(){

$query_data ="SELECT * FROM min_tabel WHERE username='mit_username' and password='mit_password'";
$query = mysql_query($query_data);
while($level = mysql_fetch_array($query)) {

$admin_level = $level[admin_level];

echo $admin_level;
    }
}


// Det her virker pludselig ikke..


function 2(){

$query_data ="SELECT * FROM $mysql_tbl_admin WHERE username='$username' and password='$password'";
$query = mysql_query($query_data);
while($level = mysql_fetch_array($query)) {

$admin_level = $level[admin_level];

echo $admin_level;
    }
}


Det skal lige sige at jeg andre steder i min kode har brugt variaber i min query uden problemer..

eks.

$sql_client="SELECT * FROM $mysql_tbl_client WHERE username='$username' and password='$password'";
$result_client=mysql_query($sql_client);

$count_client=mysql_num_rows($result_client);

her efter kommer så en if sætning..
Avatar billede repox Seniormester
04. februar 2010 - 23:58 #1
Din indledende kode er ikke pæn praksisk.
Dine array indexes skal som udgangspunkt altid pakkes ind i quotes:


$username = $_POST["username"];
$password = $_POST["password"];



Derefter skal du læse lidt om variablernes scope.
http://php.net/manual/en/language.variables.scope.php

Det vil forklare dig hvorfor dine funktioner ikke virker som du forventer.
Avatar billede hollow Nybegynder
05. februar 2010 - 00:06 #2
ok..

lige for at høre.. hvis jeg gerne vil hente en værdi ud af min database kan jeg så gøre det sådan her

$sql_admin="SELECT * FROM $mysql_tbl_admin WHERE username='$username' and password='$password'";
$result_admin=mysql_query($sql_admin);
$level = mysql_fetch_array($result);

// den værdi jeg vil have

$admin_level = $level[admin_level];
Avatar billede repox Seniormester
05. februar 2010 - 00:10 #3
Ja, det kan du da; men du ignorer min kommentar om at indkapsle array indexes og så er din kode meget sårbar over for SQL injections.

Mit bud på en bedre kode:


$sql_admin="SELECT * FROM $mysql_tbl_admin WHERE username='".mysql_real_escape_string($username)."' and password='".mysql_real_escape_string($password)."'";
$result_admin=mysql_query($sql_admin);
$level = mysql_fetch_array($result);

// den værdi jeg vil have

$admin_level = $level["admin_level"];

Avatar billede hollow Nybegynder
05. februar 2010 - 00:24 #4
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);

har det til at stå tidligere i min kode

men kan ikke få koden til hente admin_level ud med det kode du skrev.. :(
Avatar billede repox Seniormester
05. februar 2010 - 00:29 #5
stripslashes? Har du magic_quotes slået til?

Nå, men - fejlen ligger i at du angiver dit sql resultat i én variabel, men benytter en anden til at fange dine resultater med.
Prøv lige at skrive således:


$sql_admin="SELECT * FROM $mysql_tbl_admin WHERE username='".mysql_real_escape_string($username)."' and password='".mysql_real_escape_string($password)."'";
$result_admin=mysql_query($sql_admin);
$level = mysql_fetch_array($result_admin);

// den værdi jeg vil have

$admin_level = $level["admin_level"];

Avatar billede hollow Nybegynder
05. februar 2010 - 00:42 #6
Du får lige hele min kode... meget af det er taget ud fra en tutorial... jeg markere det jeg selv har tilføjet med <--------->




<?php
include("mysql.connect.php");

// Databse tabels where we have clients and admins registered
$mysql_tbl_admin="hd_admin"; // The table name of where our admins are registered

// Connect to server and select databse.
mysql_connect("$mysql_host", "$mysql_username", "$mysql_password")or die("cannot connect");
mysql_select_db("$mysql_db_name")or die("cannot select DB");

// username and password sent from form
$username=$_POST['username'];
$password=$_POST['password'];

// To protect MySQL injection (more detail about MySQL injection
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);


$sql_admin="SELECT * FROM $mysql_tbl_admin WHERE username='".mysql_real_escape_string($username)."' and password='".mysql_real_escape_string($password)."'";
$result_admin=mysql_query($sql_admin);


// Mysql_num_row is counting table row
$count_admin=mysql_num_rows($result_admin);

// If result matched $myusername and $mypassword, table row must be 1 row

if($count_admin==1){
   
<-------------------------------------------->
    $sql_admin="SELECT * FROM $mysql_tbl_admin WHERE username='".mysql_real_escape_string($username)."' and password='".mysql_real_escape_string($password)."'";
$result_admin=mysql_query($sql_admin);
$level = mysql_fetch_array($result_admin);
$admin_level = $level["admin_level"];
<-------------------------------------------------->

    session_register("username");
    session_register("password");
    session_register("admin_level");
   
    header("location:index.php");
} else {
    header("location:index.php?login=failed");
}

?>
Avatar billede repox Seniormester
05. februar 2010 - 00:45 #7
Det ser ud som om det er noget meget forældet kode? Hvor gammel er det kode og hvilket system prøver du at få det til at virke på?
Avatar billede hollow Nybegynder
05. februar 2010 - 00:45 #8
Det jeg vil med det stykke kode er at den person som logger ind.. hans admin level vil jeg hente ud og registere i en session sammen med hans username og pass..
Avatar billede hollow Nybegynder
05. februar 2010 - 00:46 #9
Jeg har en server hos one.com som jeg tester på det er vel PHP5..

er ikke lige klar over hvor gammelt det er, jeg googlede en tutorial til hvordan man laver et login..
Avatar billede repox Seniormester
05. februar 2010 - 00:58 #10
Er det meningen du gerne vil lære at lave det selv, eller skal du bare have noget der virker som du kan bruge?
Avatar billede hollow Nybegynder
05. februar 2010 - 10:48 #11
Vi gerne selv lære det... men står nemlig og skal bruge noget.. :) jeg forstå god sammen hængen i det, og kunne godt selv have skrevet det, men har ikke helt styr på hvad er mest hensigts mæssigt..
Avatar billede repox Seniormester
05. februar 2010 - 12:00 #12
Well, jeg har et lille projekt med et simpelt brugersystem hvor idéen er at det skal være nemt at integrere.

Det er en simpel kildekode og der er nogle eksempelfiler med.
Koden er optimeret til PHP5 og MySQli.

Er det noget du har lyst til at prøve? Koden er veldokumenteret der er en reference med til de forskellige funktioner. Jeg ville værdsætte lidt feedback på den, nemlig.

Alternativet er at vi forsøger at oversætte den kode du har til noget mere nutidigt?
Avatar billede j-e Nybegynder
26. februar 2010 - 11:17 #13
Hvis det ikke kun er ham som har mugligheden, vil jeg gerne se denne kode.
Avatar billede repox Seniormester
26. februar 2010 - 11:29 #14
Naturligvis.
Jeg vil meget gerne have feedback på det.
Uanset om det er omkring brugen, dokumentation eller gode idéer til forbedringer (du kan sende det som en PM).

Du kan hente den her - jeg kalder den SimpleUsers.
http://catalystcode.net/

I skrivende stund er dét det eneste projekt der kan downloades.
Avatar billede hollow Nybegynder
22. juni 2010 - 16:02 #15
fik aldirg set på det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester