Sjark Skrevet 29. september 2008 Del Skrevet 29. september 2008 <?php //This is the directory where images will be saved $target = "./images/"; $target .= basename($_FILES['photo']['name']); //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { ?> <div id="innhold"> <?php //Tells you if its all ok echo "The file ". basename( $_FILES['photo']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } // Connects to your Database mysql_connect("localhost", "root", "***") or die(mysql_error()); mysql_select_db("blogg") or die(mysql_error()); //Writes the information to the database $photo=($_FILES['photo']['name']); mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'") or die(mysql_error()); ?> Tror kansje jeg fant feilen, men har ikke fått testet selv, men du kan jo prøve koden over istedenfor den du postet i den siste posten din. Lenke til kommentar
Rematusen Skrevet 29. september 2008 Del Skrevet 29. september 2008 Legg til echo "<pre>"; print_r($_REQUEST); før sql spørringen.. Da vil det du jobber med, printes ut. Hvilken values forskjellige ting har. Nå gjorde jeg som du sa Rematusen, men da fikk jeg opp dette: Array ( [PHPSESSID] => f4ea461528ecf5e72b34c5f844afc888 ) Men hva returnerer spørringen din? Prøv å bare skrive echo i steden for mysql_query.. Altså, bytt dette: mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'") or die(mysql_error()); Til: echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'"); Lenke til kommentar
djwawa Skrevet 30. september 2008 Forfatter Del Skrevet 30. september 2008 Sjark, den koden din fungerte i teorien, og den laster opp bilde, men igjen ikke informasjon til databasen. Meldingen jeg får etter dette: The file stygg.JPG has been uploaded, and your information has been added to the directory Rematusen, det ser ut for meg som at den ikke klarer og fange opp brukernavnet til bruker. For nå prøvde jeg det du sa, og da får jeg dette: Array ( [PHPSESSID] => e8a7530a3ba2d03b06a69572a4e624a5 ) UPDATE brukere SET `photo` = 'stygg.JPG' WHERE `brukernavn` = '' The file has been uploaded, and your information has been added to the directory Lenke til kommentar
Sjark Skrevet 30. september 2008 Del Skrevet 30. september 2008 Ser feilen, står det ?brukernavn=xxxx i url'en din? det må gjøre det for at det skal fungere, hvis du bruker en form så må det stå $_POST['brukernavn'] i spørringen istedenfor $_GET['brukernavn'] Lenke til kommentar
djwawa Skrevet 30. september 2008 Forfatter Del Skrevet 30. september 2008 URL'n = index.php?side=endrebruker Så hvis jeg nå legger inn $_POST['brukernavn'] istedet, så må jeg vel også legge inn en input i formen da? Gammel form: <form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> Bilde: <input type="file" name="photo"><br> <input type="submit" value="Add"> </form> Ny form? <form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> Ditt brukernavn: <input type="tekst" name="brukernavn"><br> Bilde: <input type="file" name="photo"><br> <input type="submit" value="Add"> </form> Lenke til kommentar
djwawa Skrevet 30. september 2008 Forfatter Del Skrevet 30. september 2008 (endret) Nå prøvet jeg ut hva du sa Sjark, men det fungerte ikke.. Den legger ennå ikke inn i databasen. Formen er nå: <form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> Brukernavn:<br> <input type="text" name="brukernavn"><br> Bilde: <br><input type="file" name="photo"><br> <input type="submit" value="Add"> </form> Add.php er nå: <?php //This is the directory where images will be saved $target = "./images/"; $target = $target . basename( $_FILES['photo']['name']); //This gets all the other information from the form $photo=($_FILES['photo']['name']); // Connects to your Database mysql_connect("localhost", "root", "***") or die(mysql_error()); mysql_select_db("blogg") or die(mysql_error()); //Writes the information to the database echo "<pre>"; print_r($_REQUEST); echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'"); //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { ?> <div id="innhold"> <?php //Tells you if its all ok echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> Og meldingen etter UPDATE'N er: Array ( [brukernavn] => admin [PHPSESSID] => 613fcab01a30e17721c901befbd6626c ) UPDATE brukere SET `photo` = 'opel.PNG' WHERE `brukernavn` = 'admin' The file has been uploaded, and your information has been added to the directory edit: redigert vekk passord. var samme som til brukeren Endret 30. september 2008 av djwawa Lenke til kommentar
djwawa Skrevet 30. september 2008 Forfatter Del Skrevet 30. september 2008 (endret) Nå er URL'en slik når jeg er i formen: index.php?side=endrebruker&brukernavn=julius Og formen ser slik ut: <form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> Bilde: <br><input type="file" name="photo"><br> <input type="submit" value="Add"> </form> Som dere sikkert ser, så er ikke URL'en til add.php slik: index.php?side=add&brukernavn=*julius* Men den er bare /profilbilder/add.php Kan dette ha noe å si? Er det her feilen ligger? For hvis jeg lager formen med en "brukernavn" input, så vil jo "julius", kunne skrive "admin" og bytte bildet hans.. Eller er jeg helt på jordet nå? Og add filen ser slik ut: <?php //This is the directory where images will be saved $target = "./images/"; $target = $target . basename( $_FILES['photo']['name']); //This gets all the other information from the form $photo=($_FILES['photo']['name']); // Connects to your Database mysql_connect("localhost", "root", "***") or die(mysql_error()); mysql_select_db("blogg") or die(mysql_error()); //Writes the information to the database echo "<pre>"; print_r($_REQUEST); echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'"); //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { ?> <div id="innhold"> <?php //Tells you if its all ok echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> Prøvd denne også: echo ("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'"); Men skal jeg nå bytte til: mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET/POST['brukernavn']."'"); ??? Takker iallefall for masse god hjelp! Endret 30. september 2008 av djwawa Lenke til kommentar
Wabby Skrevet 30. september 2008 Del Skrevet 30. september 2008 GET dersom den henter fra URL string, POST dersom den skal hente fra FORM. Videre så bør du kommentere ut brukernavn og passord Lenke til kommentar
djwawa Skrevet 30. september 2008 Forfatter Del Skrevet 30. september 2008 Nå ser formen slik ut: <form enctype="multipart/form-data" action="./profilbilder/add.php" method="POST"> Brukernavn: <br><input type="text" name="brukernavn"><br> Bilde: <br><input type="file" name="photo"><br> <input type="submit" value="Add"> </form> Da taster man inn brukernavnet sitt i den øverste, og finner filen i den nederste. Og da fungerer det. Add.php ser nå slik ut: <?php //This is the directory where images will be saved $target = "./images/"; $target = $target . basename( $_FILES['photo']['name']); //This gets all the other information from the form $photo=($_FILES['photo']['name']); // Connects to your Database mysql_connect("localhost", "root", "***") or die(mysql_error()); mysql_select_db("blogg") or die(mysql_error()); //Writes the information to the database echo "<pre>"; print_r($_REQUEST); mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'"); //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { ?> <div id="innhold"> <?php //Tells you if its all ok echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> Men jeg tenkte på en ting. Hvis jeg MÅ bruke det sånn, at man MÅ taste inn brukernavnet sitt, så kan jeg jo prøve med at de må taste passord også? Eller lage ett hidden felt med _GET[brukernavn], fordi jeg har jo index.php?side=endrebruker&brukernavn=julius. Og da henter vel ut "julius" og legger det i det skjult feltet, og senere legger bildet på plass? Men måtte bare prøve å teste om det fungerte og skrive ?side=endrebruker&brukernavn=** altså at julius kan skrive admin istedenfor julius, og da endrer jo han brukeren til admin. Off, dette ble mye det Lenke til kommentar
Jonas Skrevet 30. september 2008 Del Skrevet 30. september 2008 Ja, dersom du krever at folk skriver inn kun brukernavn for å endre på slike ting, så kan alle endre alles bilder. Du må jo naturligvis hente ut brukernavn fra sessions e.l. fra login. Lenke til kommentar
Sjark Skrevet 30. september 2008 Del Skrevet 30. september 2008 Nå vet jeg ikke hvordan innlogginen din fungerer osv, men hvis du feks lagrer brukernavnet i en SESSION når personen logger inn, kan du bruke det, da blir det feks $_SESSION['brukernavn'] i steden for $_POST['brukernavn'], er vel ca de samme som Jonas sa. Du kan også endre mysql_queryen til $query = "UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'"; if(mysql_query($query)) { echo "Queryen fungerte!"; } else { echo mysql_error(); } Da vil du få opp en feilmelding hvis det er noe galt me selve mysql oppdateringen, og hva som er galt. Lenke til kommentar
djwawa Skrevet 30. september 2008 Forfatter Del Skrevet 30. september 2008 Sjark, prøvde å endre mysql_queryen til det du sa og da fikk jeg beskjed om at Queryen fungerte! Add.php ser nå slik ut: <?php //This is the directory where images will be saved $target = "./images/"; $target = $target . basename( $_FILES['photo']['name']); //This gets all the other information from the form $photo=($_FILES['photo']['name']); // Connects to your Database mysql_connect("localhost", "root", "***") or die(mysql_error()); mysql_select_db("blogg") or die(mysql_error()); //Writes the information to the database echo "<pre>"; print_r($_REQUEST); mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_SESSION['brukernavn']."'"); //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { ?> <div id="innhold"> <?php //Tells you if its all ok echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> Men ennå så legger den ikke inn informasjonen i databasen. Slenger også med config filen, som flere filer henter informajson fra: <?php session_start(); ob_start(); $host = "localhost"; // Vanligvis 'localhost' $brukernavn = "root"; // hva du logger inn med i database $passord = "***"; // Hva du har som passord når du logger inn $database = "blogg"; // Navnet på databasen $con = mysql_connect("$host", "$brukernavn", "$passord"); $con = mysql_select_db("$database"); if($_SESSION[id]) { $l = mysql_query("SELECT * From `brukere` WHERE `id`='$_SESSION[id]'"); $l = mysql_fetch_array($l); } ?> Slenger også ved login.php filen: <?php if(!$_SESSION[id]) { if(!$_GET[brukernavn]) { $check = mysql_query("SELECT * FROM `brukere`"); $check2 = mysql_num_rows($check); if(isset($_POST[logginn])) { $brukernavn = $_POST[email]; $passord = sha1($_POST[passord]); $select = mysql_query("SELECT * FROM `brukere` WHERE `email`='$brukernavn'"); $select = mysql_fetch_array($select); if($passord == $select[passord]) { echo ("Riktig, Du er nå logget inn"); $_SESSION[id] = $select[id]; header("Location: index.php"); } else { echo ("Feil e-post adresse og/eller passord!"); } } else { ?> <h1> <form method="POST" action=""> E-post:<br> <input type="text" name="email"> <br> Passord:<br> <input type="password" name="passord"> <br> <input type="submit" name="logginn" value="Logg Inn" id="logginn"> <br> <a href="?side=registrer">Registrer</a> - <a href="?side=glemtpassord">Glemt Passord?</a> </form> </h1> <?php } } } else { if($_POST[logut]) { session_destroy(); echo ("Du er logget ut!<br>Velkommen tilbake!<p><a href='?side=hoved'>Tilbake</a>"); } else { echo(" Brukernavn: <b>$l[brukernavn] </b><br> <a href='?side=bruker&brukernavn=$l[brukernavn]'>Se din profil</a><p> <a href='?side=endrebruker&brukernavn=$l[brukernavn]'>Endre profil!</a><br> <a href=\"?side=bruker\">Se brukere</a><br> <form method=\"POST\" action=\"\"><input type=\"submit\" name=\"logut\" value=\"Logg ut\"></form> "); } } ?> Lenke til kommentar
Sjark Skrevet 30. september 2008 Del Skrevet 30. september 2008 (endret) Prøv denne: <?php //This is the directory where images will be saved $target = "./images/"; $target = $target . basename( $_FILES['photo']['name']); //This gets all the other information from the form $photo=($_FILES['photo']['name']); // Connects to your Database mysql_connect("localhost", "root", "***") or die(mysql_error()); mysql_select_db("blogg") or die(mysql_error()); //Writes the information to the database echo "<pre>"; print_r($_REQUEST); mysql_query("UPDATE brukere SET photo = '$photo' WHERE `id` = '".$_SESSION['id']."'"); //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { ?> <div id="innhold"> <?php //Tells you if its all ok echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> Tror den skal fungere ;-) Endret 30. september 2008 av Sjark Lenke til kommentar
djwawa Skrevet 30. september 2008 Forfatter Del Skrevet 30. september 2008 Nei desverre sjark, den fungerer ennå ikke.. Den legger ikke inn i databasen, med mindre jeg har ett felt i formen som heter "brukernavn". Lenke til kommentar
Wabby Skrevet 30. september 2008 Del Skrevet 30. september 2008 mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_POST['brukernavn']."'"); ang denne så har jeg opplevt til tider at den ikke liker POST i SQLen. prøv å putt den i en variabel først og deretter i UPDATE. eks: $_brukernavn = $_POST['brukernavn']; mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '$_brukernavn'"); Lenke til kommentar
Jonas Skrevet 30. september 2008 Del Skrevet 30. september 2008 Tull, det har ingen ting å si. Som du kanskje ser på koden, så concater (morsom fornorsking) han med POST-verdiene, han legger de ikke inni stringen slik du ser ut til å gjøre. Lenke til kommentar
djwawa Skrevet 30. september 2008 Forfatter Del Skrevet 30. september 2008 Wabby: Det gir jo egentlig ingen mening, for jeg skal jo ikke bruke $_POST, men $_SESSION, fordi login.php lager en session, men jeg forstår ikke hvordan jeg kan få den add.php til å hente den session id'n som ble laget når brukeren logget på.. Det er vel det jeg må gjøre, tror jeg?! Takk til alle som hjelper til! Lenke til kommentar
djwawa Skrevet 30. september 2008 Forfatter Del Skrevet 30. september 2008 Nå har jeg endelig fått det til Med MYE om og men og hjelp fra mange! Jeg la iallefall inn hele upload/add.php i formen min, fordi den er includet i endrebruker siden min, og adressen der er: index.php?side=endrebruker&bruker=BRUKERNAVN. Så brukte jeg $_GET for å få brukernavnet, og da klarte den det! Her er koden, hvis noen vil ha:) <?php //This is the directory where images will be saved $target = "./inc/images/"; $target = $target . basename( $_FILES['photo']['name']); //This gets all the other information from the form $photo=($_FILES['photo']['name']); // Connects to your Database mysql_connect("localhost", "root", "**") or die(mysql_error()); mysql_select_db("blogg") or die(mysql_error()); if($_POST[endreprofilbilde]) { $pb = ($_POST[photo]); $q = mysql_query("UPDATE `brukere` SET `photo`='$photo' WHERE `id`='$_SESSION[id]'"); //Writes the information to the database mysql_query("UPDATE brukere SET `photo` = '$photo' WHERE `brukernavn` = '".$_GET['brukernavn']."'"); //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { ?> <?php //Tells you if its all ok echo "Profilbildet er blitt endret!<br>Ditt nye bilde:<p>"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } } ?> <?php include("./inc/view.php"); ?> <form enctype="multipart/form-data" action="" method="POST"> Bilde: <br><input type="file" name="photo"><br> <input type="submit" name="endreprofilbilde" value="Bytt profilbilde"> </form> Lenke til kommentar
Wabby Skrevet 30. september 2008 Del Skrevet 30. september 2008 Grattis Men du bør skille ut en del av funksjonaliteten og Include den isteden. Det er også litt rotete å bruke include midt i fila. Dele det opp i functions vil hjelpe deg med å få det oversiktlig, gjenbruk av kode. Lenke til kommentar
Wackamole Skrevet 30. september 2008 Del Skrevet 30. september 2008 (endret) Prøv denne: Klikk for å se/fjerne innholdet nedenfor <?php //This is the directory where images will be saved $target = "./images/"; $target = $target . basename( $_FILES['photo']['name']); //This gets all the other information from the form $photo=($_FILES['photo']['name']); // Connects to your Database mysql_connect("localhost", "root", "***") or die(mysql_error()); mysql_select_db("blogg") or die(mysql_error()); //Writes the information to the database echo "<pre>"; print_r($_REQUEST); mysql_query("UPDATE brukere SET photo = '$photo' WHERE `id` = '".$_SESSION['id']."'"); //Writes the photo to the server if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { ?> <div id="innhold"> <?php //Tells you if its all ok echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; } else { //Gives and error if its not echo "Sorry, there was a problem uploading your file."; } ?> Tror den skal fungere ;-) Den fungerer! - Du har bare glemt session_start(); i toppen! Prøv det djwawa, sett session_start(); i toppen av scriptet som ligger i spoiler taggen... EDIT: Pluss at du har seriøse sikkerhets feil med det scriptet du fikk til og fungere, burde helst ikke bruke $_GET i en query, da en bruker kan lett endre selve koden, og hvis du må bruke det, så burde du strippe $_GET variebelen for html tagger, og all slags slashes, osv... Endret 30. september 2008 av Famen 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å