return fout
Ik probeer simpelweg een wachtwoord uit een database te halen. Daarvoor heb ik deze function:
Code (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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function CheckPassword($user){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$myusername'";
$result=mysql_query($sql)
foreach($result as $row) {
return $row['Password'];
}
}
?>
function CheckPassword($user){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$myusername'";
$result=mysql_query($sql)
foreach($result as $row) {
return $row['Password'];
}
}
?>
Met probleem zit hem in foreach($result as $row). Ik heb een vermoeden dat dit alleen bij een pdo werkt want hier heb ik het uit gehaald. Iemand een idee? Ik krijg deze error:
Quote:
Parse error: syntax error, unexpected T_FOREACH in /Applications/XAMPP/xamppfiles/htdocs/WizzardzCheckuser.php on line 122
Alvast bedankt! ^^
Typisch geval van regels niet afsluiten xD
Toevoeging op 15/02/2011 22:29:43:
Code (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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function CheckPassword($user){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$myusername'";
$result=mysql_query($sql);
foreach($result as $row) {
return $row['Password'];
}
}
?>
function CheckPassword($user){
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="wizzardz"; // Database name
$tbl_name="account"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");
// To protect MySQL injection (more detail about MySQL injection)
$myusername = mysql_real_escape_string($user);
$sql="SELECT * FROM $tbl_name WHERE Nickname='$myusername'";
$result=mysql_query($sql);
foreach($result as $row) {
return $row['Password'];
}
}
?>
Dit zal je hele solutie worden
mysql_fetch_assoc.
Daarnaast is een return in een while/for/foreach loop niet goed. Je moet in deze loop de waarde in een array zetten en die waarde returnen.
En daarnaast werkt foreach hier inderdaad ook niet. Je zal moeten gaan werken met bijv. Daarnaast is een return in een while/for/foreach loop niet goed. Je moet in deze loop de waarde in een array zetten en die waarde returnen.
Ik denk dat hij hiermee bedoelt dat er 1 row wordt gevonden
Gewijzigd op 15/02/2011 22:41:03 door bram unknown
- Foutafhandeling ontbreekt.
- Variabelen binnen quotes, haal ze erbuiten (dingen als mysql_connect("$host", etc. is ontzettend grote onzin).
- Selecteer gewoon wat je wilt hebben, gebruik geen *.
Mij lijkt dat je maar één resultaat krijgt, dus hoe je op die foreach bent gekomen mag joost weten. Gebruik zoals Wouter aangaf wel iets als mysql_fetch_assoc.
Verder vraag ik mij ook wel af wat nou de bedoeling is van deze functie.
Let ook op, de aanpassingen van --- Roboroads --- zijn ook onzinnig / slecht.
Quote:
- Binnen de functie hoor je lijkt mij geen verbinding te maken met de database, je zult waarschijnlijk buiten de functie daar ook al verbinding mee hebben.
Misschien kan ik verbinding wel buiten een functie maken. Probeer ik later wel even.
Quote:
- Foutafhandeling ontbreekt.
Zet ik er later wel in. Tot en met de for loop doet hij het gewoon.
Quote:
- Variabelen binnen quotes, haal ze erbuiten (dingen als mysql_connect("$host", etc. is ontzettend grote onzin).
Werkt alsnog, maar ik zal ze even weg halen.
Quote:
- Selecteer gewoon wat je wilt hebben, gebruik geen *
Fout van me omdat ik iets proberen was. Dit wordt dus verandert met 'Password'.
Quote:
Mij lijkt dat je maar één resultaat krijgt, dus hoe je op die foreach bent gekomen mag joost weten.
Ik wil de value van password weten die bij nickname hoort. Als je dit met mysql_query doet, krijg je die info in een var. Die moet je naderhand nog onderschijden per account wat je binnen krijgt. Ook al is dat nu maar 1.
Quote:
Verder vraag ik mij ook wel af wat nou de bedoeling is van deze functie.
Wachtwoord krijgen die bij een account hoort. Dit is later voor recover password.
Toevoeging op 15/02/2011 22:50:09:
Quote:
Op die manier krijg ik terug als value: 1.
Ik denk dat hij hiermee bedoelt dat er 1 row wordt gevonden
Ik denk dat hij hiermee bedoelt dat er 1 row wordt gevonden
Lees nu pas dat hij een true or false mee geeft. Ik heb de value nodig.
Bram unknown op 15/02/2011 22:48:41:
Misschien kan ik verbinding wel buiten een functie maken. Probeer ik later wel even.
Quote:
- Binnen de functie hoor je lijkt mij geen verbinding te maken met de database, je zult waarschijnlijk buiten de functie daar ook al verbinding mee hebben.
Misschien kan ik verbinding wel buiten een functie maken. Probeer ik later wel even.
Ik denk dat je nog meer sql dingen buiten je functie hebt lopen, dus daar hoort het (en is sowieso netter).
Bram unknown op 15/02/2011 22:48:41:
Zet ik er later wel in. Tot en met de for loop doet hij het gewoon.
Quote:
- Foutafhandeling ontbreekt.
Zet ik er later wel in. Tot en met de for loop doet hij het gewoon.
Dat denk je, één van de grootste fouten die er gemaakt kunnen worden is dat foutafhandeling later wordt toegevoegd. Doe het gewoon in één keer goed. Kijk ook goed op php.net wat je allemaal terug krijgt.
Bram unknown op 15/02/2011 22:48:41:
Werkt alsnog, maar ik zal ze even weg halen.
Quote:
- Variabelen binnen quotes, haal ze erbuiten (dingen als mysql_connect("$host", etc. is ontzettend grote onzin).
Werkt alsnog, maar ik zal ze even weg halen.
Het werkt wel, maar het is onzinnig. Een variabele als string meegeven, terwijl er een variabele nodig is. Beetje raar hé. Nu is het alsof je 2+4-2 doet.
Bram unknown op 15/02/2011 22:48:41:
Fout van me omdat ik iets proberen was. Dit wordt dus verandert met 'Password'.
Quote:
- Selecteer gewoon wat je wilt hebben, gebruik geen *
Fout van me omdat ik iets proberen was. Dit wordt dus verandert met 'Password'.
Oké.
Bram unknown op 15/02/2011 22:48:41:
Ik wil de value van password weten die bij nickname hoort. Als je dit met mysql_query doet, krijg je die info in een var. Die moet je naderhand nog onderschijden per account wat je binnen krijgt. Ook al is dat nu maar 1.
Toevoeging op 15/02/2011 22:50:09:
Lees nu pas dat hij een true or false mee geeft. Ik heb de value nodig.
Quote:
Mij lijkt dat je maar één resultaat krijgt, dus hoe je op die foreach bent gekomen mag joost weten.
Ik wil de value van password weten die bij nickname hoort. Als je dit met mysql_query doet, krijg je die info in een var. Die moet je naderhand nog onderschijden per account wat je binnen krijgt. Ook al is dat nu maar 1.
Toevoeging op 15/02/2011 22:50:09:
Quote:
Op die manier krijg ik terug als value: 1.
Ik denk dat hij hiermee bedoelt dat er 1 row wordt gevonden
Ik denk dat hij hiermee bedoelt dat er 1 row wordt gevonden
Lees nu pas dat hij een true or false mee geeft. Ik heb de value nodig.
Inderdaad krijg je true of false terug. Die data kan je gebruiken voor foutafhandeling.
Bram unknown op 15/02/2011 22:48:41:
Wachtwoord krijgen die bij een account hoort. Dit is later voor recover password.
Quote:
Verder vraag ik mij ook wel af wat nou de bedoeling is van deze functie.
Wachtwoord krijgen die bij een account hoort. Dit is later voor recover password.
Dit vind ik een hele enge gedachte. Een password sla je als hash met salt op, zodat een password niet kan worden gestolen. Als iemand zijn password kwijt is zal er een nieuwe worden gegenereerd.
Maar er moet toch wel een simpele manier zijn om gewoon data uit de tabel te halen? Ik wil bijvoorbeeld eigenlijk ook dat ze hun eigen "recovery question" kiezen die later wordt opgeroepen bij het terugkrijgen van hun account. Deze moet dan toch ook uit de database gehaald worden terwijl je alleen de account naam van een gebruiker weet.
Bram unknown op 15/02/2011 23:01:46:
Nja, een nieuw password genereren ligt een beetje boven mijn niveau en is voor mij te veel werk om nog tijdig af te krijgen. Ik moet deze site namelijk vrijdag inleveren als po.
Een nieuw password genereren is niet zo heel erg ingewikkeld. Of het veel tijd kost maakt niet uit, dit is iets waar je al eerder rekening mee had moeten houden.
Bram unknown op 15/02/2011 23:01:46:
Maar er moet toch wel een simpele manier zijn om gewoon data uit de tabel te halen? Ik wil bijvoorbeeld eigenlijk ook dat ze hun eigen "recovery question" kiezen die later wordt opgeroepen bij het terugkrijgen van hun account. Deze moet dan toch ook uit de database gehaald worden terwijl je alleen de account naam van een gebruiker weet.
Wat bedoel je met simpelere manier van data ophalen? Ja, als je data uit een database wilt halen heb je een aantal regels code nodig. Ongeacht wat voor data het is.
Een recovery question is inderdaad net om te gebruiken. Mij ging het erom dat jij hier dus blijkbaar gewoon het password als plain text (normale tekst) opslaat, dat is niet de bedoeling.
Klopt. En ik ben eigenlijk ook nog van plan om passwords automatisch te coderen en decoderen.
Maar zou je voor nu please even kunnen vertellen welke code ik nodig heb om die gegevens te lezen? Ik heb op php.net en google gezocht maar kan niet echt iets vinden.
Toevoeging op 15/02/2011 23:08:31:
Btw later als mijn site officieel online staat ga ik nog wel een nieuw password genereren. Maar voor nu laat ik dat even zitten.
Bram unknown op 15/02/2011 23:07:59:
Maar zou je voor nu please even kunnen vertellen welke code ik nodig heb om die gegevens te lezen?
Misschien de antwoorden beter lezen?
Wouter J op 15/02/2011 22:30:45:
Je zal moeten gaan werken met bijv. mysql_fetch_assoc.
Wil niet onbeleefd klinken maar heb al verteld dat je hierbij een boolean terug krijgt. Niet de value die ik zoek. toch?
@bram, als je kijkt op de link die ik je gaf (van php.net). Kun je zien welke waarde er wordt gereturned: false of de value.
Bram unknown op 16/02/2011 01:07:14:
Wil niet onbeleefd klinken maar heb al verteld dat je hierbij een boolean terug krijgt. Niet de value die ik zoek. toch?
Misschien moet je eens je ogen open doen en lezen wat er allemaal staat?
mysql_query geeft inderdaad een boolean terug (dus true of false). Die waarde gebruik je voor foutafhandeling.
mysql_fetch_assoc geeft de waarde of false terug.
Staat allemaal op php.net met uitgebreide voorbeelden.
Hij deed het net voordat ik dat laatste bericht van karl karl las.
Echt heel erg bedankt allemaal! ^^