fneset Skrevet 9. mai 2005 Del Skrevet 9. mai 2005 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
PT Skrevet 9. mai 2005 Del Skrevet 9. mai 2005 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
fneset Skrevet 9. mai 2005 Forfatter Del Skrevet 9. mai 2005 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
EirikO Skrevet 9. mai 2005 Del Skrevet 9. mai 2005 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... Lenke til kommentar
Gilbert Skrevet 9. mai 2005 Del Skrevet 9. mai 2005 Ikke noe i veien for å stoppe scriptet hvis det er hensiktsmessig. Ofte er det en header("location: dinlink.php"); før exit();. Lenke til kommentar
fneset Skrevet 10. mai 2005 Forfatter Del Skrevet 10. mai 2005 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... 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
Mellet Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 (endret) $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 10. mai 2005 av Mellet Lenke til kommentar
fneset Skrevet 10. mai 2005 Forfatter Del Skrevet 10. mai 2005 $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
Mellet Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 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
LateFot Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 (endret) $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 sry ikke helt inne på php Endret 10. mai 2005 av LateFot Lenke til kommentar
kakkle Skrevet 10. mai 2005 Del Skrevet 10. mai 2005 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
fneset Skrevet 11. mai 2005 Forfatter Del Skrevet 11. mai 2005 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
kakkle Skrevet 11. mai 2005 Del Skrevet 11. mai 2005 (endret) 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 11. mai 2005 av kakkle Lenke til kommentar
fneset Skrevet 11. mai 2005 Forfatter Del Skrevet 11. mai 2005 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
kakkle Skrevet 11. mai 2005 Del Skrevet 11. mai 2005 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå