Gå til innhold

IF & Values! HelP!


Anbefalte innlegg

Hei!

Driver å lage ei heimeside til fotballklubben min. Har scripta php før for ein 4 år sidan. tenkte eg skulle gjere "comeback". Var akkuratt ferdig med scriptet mitt idag. Når eg skulle laste det opp på internett fekk eg eit problem.. Når eg prøver å poste noko skjer det ingenting. Det var da eg fant ut at det var nye koder. Eg brukte if($add_news){ (samme som eg brukte for 4 år sidan)

Prøvde: if($_POST["add_news"]){

da klarte jeg å poste. fekk posta, men kunn id'en vart posta. Resten vart blankt. Eg tenkte at kanskje eg måtte endre på VALUES.

Prøvde meg med denne linja:

mysql_query("INSERT INTO nyheit VALUES('$id','$_POST["emne"]','$_POST["dato"]','$_POST["nyheit"]')");

 

Denne gjekk ikkje. Fekk opp error. Skjønner at det har skjedd forandringer innan PHP-verden sidan eg scripta for fire år sidan. Nokon som kan hjelpe meg?

 

Hadde vært kjempefint..

På førehånd tusen takk..

Mvh Frank

Lenke til kommentar
Videoannonse
Annonse

if($add_news) { vil bare funke hvis register_globals er slått på i php.ini, og det vil vi egentlig ikke siden dette kan medføre en sikkerhetsrisiko. Du må derfor bruke $_POST['noe'], $_GET['noe'] osv for å hente data ut fra skjemaer / url.

Lenke til kommentar
if($add_news) { vil bare funke hvis register_globals er slått på i php.ini, og det vil vi egentlig ikke siden dette kan medføre en sikkerhetsrisiko. Du må derfor bruke $_POST['noe'], $_GET['noe'] osv for å hente data ut fra skjemaer / url.

Har fått til litt meir her no

Fant ut at kodene vart slik:

if($_POST["add_news"]){

mysql_query("INSERT INTO nyheit VALUES('$id','$_POST[emne]','$_POST[dato]','$_POST[nyheit]')");

 

 

Men det eg lurer på no er:

elseif($_POST["delete"]){

mysql_query("DELETE FROM nyheit WHERE id='$_POST[id]'");

echo"$id deleted";

exit;

} <--- rett eller?

 

Dersom eg skal lage ein link som får id'en til å slette seg ved bruk av koden over, korleis blir linken da?

modify_nyheit.php?delete=1&id=$id <<--- ?

 

Var vanskelig å sette seg inn i dette igjen ja..:)

Lenke til kommentar
Men det eg lurer på no er:

elseif($_POST["delete"]){

mysql_query("DELETE FROM nyheit WHERE id='$_POST[id]'");

echo"$id deleted";

exit;

} <--- rett eller?

 

Dersom eg skal lage ein link som får id'en til å slette seg ved bruk av koden over, korleis blir linken da?

modify_nyheit.php?delete=1&id=$id <<--- ?

 

Var vanskelig å sette seg inn i dette igjen ja..:)

Så vidt jeg skjønner er linken din riktig, men når du bruker en link til å sende variabler, må du bruke $_GET['id'], ikke POST.

 

Skjønner heller ikke helt hvorfor du bruker exit; i koden din. Den stopper hele resten av koden... Jeg har i alle fall erfart at den ikke trengs.. Men meget mulig jeg tar feil her, beveger mer litt på tynn is... :whistle:

Lenke til kommentar
Men det eg lurer på no er:

elseif($_POST["delete"]){

mysql_query("DELETE FROM nyheit WHERE id='$_POST[id]'");

echo"$id deleted";

exit;

}  <--- rett eller?

 

Dersom eg skal lage ein link som får id'en til å slette seg ved bruk av koden over, korleis blir linken da?

modify_nyheit.php?delete=1&id=$id      <<---  ?

 

Var vanskelig å sette seg inn i dette igjen ja..:)

Så vidt jeg skjønner er linken din riktig, men når du bruker en link til å sende variabler, må du bruke $_GET['id'], ikke POST.

 

Skjønner heller ikke helt hvorfor du bruker exit; i koden din. Den stopper hele resten av koden... Jeg har i alle fall erfart at den ikke trengs.. Men meget mulig jeg tar feil her, beveger mer litt på tynn is... :whistle:

Sliter med ein siste ting også.

 

$query = mysql_query("SELECT * FROM login WHERE username='$_GET[$adv_user]' AND password='$login[adv_pass]'");

$count = mysql_num_rows($query);

 

if($_GET[count==0]){

header("location: index.html");}

if($_GET[count==1]){

header("location: admin.php");}

 

 

Dette er til innloggingen til ein admin. Den sjekker om brukernavn og passord stemmer. Men får den ikkje til å stemme pga _GET / _POST styre.

 

Ser du feilen her?

Lenke til kommentar
$query = mysql_query("SELECT * FROM login WHERE username='$_GET[$adv_user]' AND password='$login[adv_pass]'");

$count = mysql_num_rows($query);

 

if($_GET[count==0]){

header("location: index.html");}

if($_GET[count==1]){

header("location: admin.php");}

 

Bruker du ett skjema før dette?

Hvor man skriver inn B&P å deretter sjekker denne om det er riktig ?..

 

I såfall...

 

Prøv dette:

 

$query = mysql_query("SELECT * FROM login WHERE username='$_POST['user']' AND password='$_POST['pass']'");
$count = mysql_num_rows($query);

if($_GET[count=="0"]){
header("location: index.html");}
if($_GET[count=="1"]){
header("location: admin.php");}

Dette skal funke om du har et logginn skjema som linker videre til denne ^^

 

PS: Dette scriptet avhenger av at Input til Brukernavn heter "user" og Input til Passord heter "pass" :)

Endret av Mellet
Lenke til kommentar
$query = mysql_query("SELECT * FROM login WHERE username='$_GET[$adv_user]' AND password='$login[adv_pass]'");

$count = mysql_num_rows($query);

 

if($_GET[count==0]){

header("location: index.html");}

if($_GET[count==1]){

header("location: admin.php");}

 

Bruker du ett skjema før dette?

Hvor man skriver inn B&P å deretter sjekker denne om det er riktig ?..

 

I såfall...

 

Prøv dette:

 

$query = mysql_query("SELECT * FROM login WHERE username='$_POST['user']' AND password='$_POST['pass']'");
$count = mysql_num_rows($query);

if($_GET[count=="0"]){
header("location: index.html");}
if($_GET[count=="1"]){
header("location: admin.php");}

Dette skal funke om du har et logginn skjema som linker videre til denne ^^

 

PS: Dette scriptet avhenger av at Input til Brukernavn heter "user" og Input til Passord heter "pass" :)

Hei!

ja bruker et skjema som du skriver inn B&P, og deretter sjekker med koden du såg på istad.

 

Fekk opp ein error når eg brukte den koden eg fekk av deg:

 

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/webha2/web/admin/chk.php on line 5

 

line 5: $query = mysql_query("SELECT * FROM login WHERE username='$_POST['user']' AND password='$_POST['pass']'");

Lenke til kommentar
Hei!

ja bruker et skjema som du skriver inn B&P, og deretter sjekker med koden du såg på istad.

 

Fekk opp ein error når eg brukte den koden eg fekk av deg:

 

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/webha2/web/admin/chk.php on line 5

 

line 5: $query = mysql_query("SELECT * FROM login WHERE username='$_POST['user']' AND password='$_POST['pass']'");

Ops..

 

Har gjort en liten feil..

Prøv denne:

 

$query = mysql_query("SELECT * FROM login WHERE username='{$_POST['user']}' AND password='{$_POST['pass']}'");
$count = mysql_num_rows($query);

if($_GET[count=="0"]){
header("location: index.html");}
if($_GET[count=="1"]){
header("location: admin.php");}

 

Om det ikke funker.. Så gjør dette:

 

 

$user = $_POST['user'];
$pass = $_POST['pass'];

$query = mysql_query("SELECT * FROM login WHERE username='$user' AND password='$pass'");
$count = mysql_num_rows($query);

if($_GET[count=="0"]){
header("location: index.html");}
if($_GET[count=="1"]){
header("location: admin.php");}

Lenke til kommentar

$query = mysql_query("SELECT * FROM login WHERE username='{$_POST['user']}' AND password='{$_POST['pass']}'");
$count = mysql_num_rows($query);

if($_GET[count=="0"]){
header("location: index.html");}
if($_GET[count=="1"]){
header("location: admin.php");}

 

Om det ikke funker.. Så gjør dette:

 

 

$user = $_POST['user'];
$pass = $_POST['pass'];

$query = mysql_query("SELECT * FROM login WHERE username='$user' AND password='$pass'");
$count = mysql_num_rows($query);

if($_GET[count=="0"]){
header("location: index.html");}
if($_GET[count=="1"]){
header("location: admin.php");}

Heisan så litt på den koden her og kom til å tenke på en artikkel om sikkerhet jeg leste igår. vil ikke denne koden la en mulig angriper logge inn på admin siden om han skriver passord slik:

 

' OR password='' '

 

ser ingen sjekking på bruker input, så tenkte jeg bare skulle nevne det.

 

edit: bahh tror jeg misforsto artikkelen :blush: sry ikke helt inne på php

Endret av LateFot
Lenke til kommentar

Tror nok problemet ligger i if setningen din. Du legger inn antall funnet rader av spørringen din i $count, men sjekket med $_GET[count==0]. Det bli litt feil.

 

$_GET brukes for å få tak i en variabel som er satt i urlen. f.eks index.php?id=2

$id = $_GET["id"] vil da gi $id verdien 2.

$_GET brukes også for å få tak i verdier fra skjemaer som sender med metoden GET istedetfor post (slik at det som skrives inn i skjemaet vises i urlen)

 

For å lese litt om predefinerte variabler ($_POST, $_GET, $_SESSION, ...) kan du kikke på php.net

 

Vil tippe at den if (if($_GET[count==0]))setningen vil se lik ut som for 4 år siden... (if($count ==0))

 

/kakkle

Lenke til kommentar
Tror nok problemet ligger i if setningen din. Du legger inn antall funnet rader av spørringen din i $count, men sjekket med $_GET[count==0]. Det bli litt feil.

 

$_GET brukes for å få tak i en variabel som er satt i urlen. f.eks index.php?id=2

$id = $_GET["id"] vil da gi $id verdien 2.

$_GET brukes også for å få tak i verdier fra skjemaer som sender med metoden GET istedetfor post (slik at det som skrives inn i skjemaet vises i urlen)

 

For å lese litt om predefinerte variabler ($_POST, $_GET, $_SESSION, ...) kan du kikke på php.net

 

Vil tippe at den if (if($_GET[count==0]))setningen vil se lik ut som for 4 år siden... (if($count ==0))

 

/kakkle

Problemet med den gamle if($count=="0") er at når du trykker på "submit-knappen" så kommer den tilbake til samme side som den starta. Prøvde igjen nå etter at du skreiv innlegget.

Dersom eg bruker: if($_GET[count==0]){

blir eg redirecta til ei blank side (kvit). (Det er den sida som disse kodene står på)

Lenke til kommentar

Det har vel ingenting med submit eller skemaet å gjøre i det hele tatt ? $count teller jo bare antall rader i databsen som har det brukernavnet og det passordet som er tastet inn i skjemaet.

 

Husk at mysql_num_rows returnerer en int.

Det er vel kanskje best å teste om det er 1 rad, eller skal det være mulig for flere å ha samme brukernavn og passord ? Kan by på en god del store problemer i såfall :)

if($count == 1) { // 1 rad med brukernavn og passord ble funnet. Log inn
header("location:admin.php");
}
else {
header("location:index.html");
}

 

EDIT: Litt smårettelser :)

 

EDIT2: Sikkerheten på scriptet ditt er en helt annen ting. Bør utbedres

Endret av kakkle
Lenke til kommentar
Det har vel ingenting med submit eller skemaet å gjøre i det hele tatt ? $count teller jo bare antall rader i databsen som har det brukernavnet og det passordet som er tastet inn i skjemaet.

 

Husk at mysql_num_rows returnerer en int.

Det er vel kanskje best å teste om det er 1 rad, eller skal det være mulig for flere å ha samme brukernavn og passord ? Kan by på en god del store problemer i såfall :)

if($count == 1) { // 1 rad med brukernavn og passord ble funnet. Log inn
header("location:admin.php");
}
else {
header("location:index.html");
}

 

EDIT: Litt smårettelser :)

 

EDIT2: Sikkerheten på scriptet ditt er en helt annen ting. Bør utbedres

Skal prøve å utbedre det seinare. Det var ein ting til eg kom til å tenke på.

Sånn som cookies. Kodene for de er vel heilt sikkert endra på også.

Her er loginscriptet:

 

chk.php:

$user = $_POST['user'];

$pass = $_POST['pass'];

 

$query = mysql_query("SELECT * FROM login WHERE username='$user' AND password='$pass'");

$count = mysql_num_rows($query);

 

if($count=="0"){

header("location: index.html");}

if($count=="1"){

header("location: admin.php");}

 

login.php:

if($_POST["user"]){

setcookie("login[adv_user]", $user, time()+3600);

}

if($_POST["pass"]){

setcookie("login[adv_pass]", $pass, time()+3600);

}

 

header("location: chk.php");

 

 

Det er også ei html-fil sjølvsagt, men den er ikkje relevant å poste.

Er det feil det med cookies?

Lenke til kommentar

Tror du vil ha godt av å lese på php.net...

 

Sjekk linken jeg postet i mitt første innlegg.. php.net

Der står det om $_SESSION, $_COOKIE, $_POST, $_GET osv...

 

php.net har løsningen på det meste ;)

Et lite tips: Er det en funksjon du lurer på hvordan virker og slikt. skriv inn www.php.net/funksjon, så få rdu alt om den funksjonen. Eksempelvis funksjonen du lurte på: http://www.php.net/setcookie

Her får du svar på det du spør om.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...